<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          技術(shù)菜鳥如何做出好看的奧運(yùn)會(huì)獎(jiǎng)牌榜

          共 9324字,需瀏覽 19分鐘

           ·

          2021-08-24 15:50

          大家好,我是杰哥。

          2021年7月23日,第32屆夏季奧運(yùn)會(huì)在日本東京拉開帷幕。大賽共設(shè)置33個(gè)大項(xiàng)50個(gè)分項(xiàng)339個(gè)小項(xiàng),是歷屆奧運(yùn)會(huì)中產(chǎn)生金牌最多的一屆 。

          中國(guó)隊(duì)已88枚金牌、32枚銀牌、18枚銅牌完美收官,我計(jì)劃用可視化方法看一看歷屆奧運(yùn)會(huì)獎(jiǎng)牌榜。

          數(shù)據(jù)準(zhǔn)備

          所有數(shù)據(jù)均是從維基百科中獲取,有如下數(shù)據(jù):

          中國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)

          ▲ 中國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)

          歷屆獎(jiǎng)牌榜全球總榜

          ▲ 歷屆獎(jiǎng)牌榜全球總榜

          歷屆各國(guó)獎(jiǎng)牌榜

          ▲ 歷屆各國(guó)獎(jiǎng)牌榜(2016年)

          中國(guó)歷屆單項(xiàng)比賽獎(jiǎng)牌榜

          ▲ 中國(guó)歷屆單項(xiàng)比賽獎(jiǎng)牌榜

          可視化

          歷年主辦國(guó)分布圖

          ▲ 歷年主辦國(guó)分布圖

          夏季奧林匹克運(yùn)動(dòng)會(huì)(Summer Olympic Games或Games of the Olympic)是由國(guó)際奧林匹克委員會(huì)主辦的國(guó)際性多項(xiàng)運(yùn)動(dòng)賽事,每四年舉辦一次。從1904年起,夏季奧運(yùn)會(huì)的每個(gè)項(xiàng)目都會(huì)頒發(fā)獎(jiǎng)牌,其中第一名為金牌,第二名為銀牌,第三名為銅牌。

          美國(guó)舉辦過4次夏季奧運(yùn)會(huì),是舉辦奧運(yùn)會(huì)次數(shù)最多的國(guó)家。英國(guó)于2012年第3次舉辦夏季奧運(yùn)會(huì),倫敦成為第1個(gè)舉辦3次夏季奧運(yùn)會(huì)的城市。澳大利亞、法國(guó)、德國(guó)、日本和希臘都舉辦過2次夏季奧運(yùn)會(huì)。

          其他舉辦過夏季奧運(yùn)會(huì)的國(guó)家有:中國(guó)、比利時(shí)、加拿大、芬蘭、意大利、墨西哥、荷蘭、韓國(guó)、西班牙、蘇聯(lián)和瑞典。亞洲第1次奧運(yùn)會(huì)在日本東京舉辦。南美洲的第1次奧運(yùn)會(huì)在巴西里約熱內(nèi)盧舉辦。有5個(gè)城市曾2次舉辦過夏季奧運(yùn)會(huì):東京、洛杉磯、倫敦、巴黎和雅典。

          繪圖方法

          繪圖工具:pyecharts + Microsoft

          第一步,利用pyecharts繪制主辦國(guó)及主辦次數(shù)全球地圖可視化,可以直接到官網(wǎng)例子學(xué)習(xí)如何繪制一個(gè)全球圖。

          第二步,為地圖標(biāo)上帶箭頭的時(shí)間文字,由于暫未習(xí)得如何在pyecharts地圖上用代碼的方法實(shí)現(xiàn)標(biāo)注,因此可以借助Microsoft手動(dòng)標(biāo)注。

          from pyecharts import options as opts
          from pyecharts.charts import Map
          df_1 = df_total.groupby(['country']).count().reset_index()
          c = (
              Map()
              .add("", [list(z) for z in zip(df_1.country, df_1.年份)], "world",is_map_symbol_show=False)
              .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
              .set_global_opts(
                  title_opts=opts.TitleOpts(title="數(shù)據(jù)STUDIO"),
                  visualmap_opts=opts.VisualMapOpts(max_=4,is_show=False),
              )
          #     .render("map_world.html")
          )
          c.render_notebook()

          歷屆獎(jiǎng)牌榜

          奧運(yùn)會(huì)是全世界規(guī)模最大的綜合性體育運(yùn)動(dòng)會(huì),全世界的各個(gè)國(guó)家都會(huì)派運(yùn)動(dòng)員來參加!奧運(yùn)會(huì)五大體育強(qiáng)國(guó):1.美國(guó),2.中國(guó),3.英國(guó),4.法國(guó),5.德國(guó)。

          截至里約奧運(yùn)會(huì),中國(guó)代表團(tuán)共參加過九屆夏季奧運(yùn)會(huì),累計(jì)取得546枚奧運(yùn)獎(jiǎng)牌,包括224枚金牌 、167枚銀牌、155枚銅牌。

          ▲ 歷屆獎(jiǎng)牌榜

          繪圖方法

          上圖是按照金牌總數(shù)金牌排序繪圖,由于參賽國(guó)家過多,這里只繪制了金牌總數(shù)TOP30的國(guó)家。

          繪圖工具:Plotly + Microsoft

          第一步通過以下代碼繪制堆疊柱狀圖,第二步將國(guó)旗圖片與柱狀圖組合。

          df_total_country_num = df_total_country.iloc[:30,].iloc[::-1,:]
          fig = go.Figure()
          fig.add_trace(go.Bar(
              x=df_total_country_num['金'],
              y=df_total_country_num['國(guó)家'],
              name='金牌',
              orientation='h',
              marker=dict(
                  color='rgba(242,192,86, 0.6)',
                  line=dict(color='rgba(242,192,86, 1.0)', width=3)),
              textposition='inside',
              text=df_total_country_num['金'].values,
              textangle = 90))
          fig.add_trace(go.Bar(銀牌))
          fig.add_trace(go.Bar(銅牌))

          fig.update_layout(barmode='stack', height=1000,
              width=1000,
              title='歷屆獎(jiǎng)牌榜TOP30',
              template='ggplot2',
              font=dict( size=12, color="Black" ),
              plot_bgcolor="#fafafa",
              legend=dict(yanchor="top",
              y=1.1, xanchor="left", x=0.9))
          fig.show()

          中國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)

          翻閱新中國(guó)夏季奧運(yùn)會(huì)歷史,最早可上溯到1984年。中國(guó)在重返國(guó)際奧委會(huì)后首次派出代表團(tuán)參加夏季奧運(yùn)會(huì)。

          1988年,乒乓球項(xiàng)目首次進(jìn)入夏季奧運(yùn)會(huì),中國(guó)奪得了4枚金牌中的2枚,奠定了在該項(xiàng)目中不可動(dòng)搖的地位。

          1992年,巴塞羅那夏季奧運(yùn)會(huì)上,中國(guó)代表團(tuán)在田徑、柔道中實(shí)現(xiàn)突破 。

          1996年,亞特蘭大奧運(yùn)會(huì)上,首次實(shí)現(xiàn)了乒乓球項(xiàng)目的金牌包攬。

          2000年,悉尼奧運(yùn)會(huì)上,中國(guó)代表團(tuán)在乒乓球項(xiàng)目再度實(shí)現(xiàn)對(duì)金牌的包攬,舉重、體操、跳水、羽毛球等項(xiàng)目也收獲頗豐,并獲得了中國(guó)隊(duì)在跆拳道項(xiàng)目的首枚金牌。

          2004年,雅典奧運(yùn)會(huì),中國(guó)隊(duì)在網(wǎng)球、摔跤和皮劃艇比賽中首次有金牌入賬,劉翔在男子110米欄比賽中為中國(guó)隊(duì)取得歷史上首枚男子徑賽奧運(yùn)金牌,成為國(guó)人的驕傲。

          2008年,中國(guó)的首都北京成為奧運(yùn)會(huì)主辦國(guó),中國(guó)取得了51金21銀28銅的優(yōu)異成績(jī),成為奧運(yùn)歷史上首個(gè)登上金牌榜首的亞洲國(guó)家。

          2012年,第30屆奧運(yùn)會(huì)在英國(guó)倫敦舉行。羽毛球跟隨乒乓球其后,成為中國(guó)隊(duì)第二個(gè)實(shí)現(xiàn)金牌包攬的項(xiàng)目。

          2016年,第31屆里約奧運(yùn)會(huì)上,中國(guó)隊(duì)不僅在乒乓球、跳水等傳統(tǒng)優(yōu)勢(shì)項(xiàng)目上爭(zhēng)金奪銀,而且在場(chǎng)地自行車項(xiàng)目中首次拿到金牌。中國(guó)女排暨1984、2004年兩度奪冠以來,再次登頂,續(xù)寫女排精神的榮耀。

          相對(duì)于體育強(qiáng)國(guó)美國(guó)而言,中國(guó)近年來一路逆襲,無時(shí)無刻不在詮釋著中國(guó)的奧運(yùn)精神。

          ▲ 中國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)

          ▲ 美國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)

          繪圖方法

          繪圖工具:Plotly

          fig = go.Figure()
          fig.add_trace(go.Bar(
              x=df_total_year['地點(diǎn)'],
              y=df_total_year['金牌'],
              name='金牌',
              marker_color='gold',
              textposition='inside',
              text=df_total_year['金牌'].values,
              textangle = 90
          ))
          fig.add_trace(go.Bar('銀牌'))
          fig.add_trace(go.Bar('銅牌'))
          fig.add_trace(go.Scatter(
              x=df_total_year['地點(diǎn)'],
              y=df_total_year['參賽選手'],
              name='參賽選手',
              mode='markers+text+lines',
              marker_color='black',
              marker_size=10,
              textposition='top center',
              line=dict(color='orange',dash='dash'),
              yaxis='y2'))
          fig.update_layout(barmode='group', xaxis_tickangle=-45,
              title='中國(guó)歷年奧運(yùn)獎(jiǎng)牌榜成績(jī)',
              xaxis_title="主辦國(guó)",
              yaxis_title="獎(jiǎng)牌數(shù)",
              template='ggplot2',
              font=dict(size=12, color="Black"),
              xaxis=dict(showgrid=False),
              yaxis=dict(showgrid=False),
              plot_bgcolor="#fafafa",
              yaxis2=dict(showgrid=True,overlaying='y',side='right',title='參賽選手'),
              legend=dict(yanchor="top",
              y=1.3, xanchor="left", x=0.9))
          fig.show()

          單項(xiàng)比賽項(xiàng)目成績(jī)表

          從比賽項(xiàng)目來看,跳水、舉重、體操、乒乓球、射擊、羽毛球是中國(guó)傳統(tǒng)的優(yōu)勢(shì)體育項(xiàng)目。其中,跳水更是以40枚金牌成為了中國(guó)獲得最多金牌的奧運(yùn)項(xiàng)目。

          ▲ 圖片來源:人民日?qǐng)?bào)客戶端
          ▲ 單項(xiàng)比賽項(xiàng)目成績(jī)表

          繪圖方法

          繪圖工具:Excel

          直接選中數(shù)據(jù),插入條形圖,并設(shè)置數(shù)據(jù)點(diǎn)格式,用目標(biāo)圖片對(duì)其進(jìn)行填充(圖片或紋理填充),填充方式為層疊。

          ▲ 設(shè)置數(shù)據(jù)點(diǎn)格式

          酷炫的全球獎(jiǎng)牌分布動(dòng)圖

          ▲ 總榜
          ▲ 金牌
          ▲ 銀牌
          ▲ 銅牌

          繪圖方法

          繪圖工具:geopandas + imageio

          第一步,先利用geopandas繪制出歷年各個(gè)獎(jiǎng)牌的全球分布圖,其中比較影響美觀的參數(shù):cmap,根據(jù)matplotlib顏色集選取合適的顏色,以達(dá)到美觀的效果。

          第二步,將上面繪制出的png靜態(tài)圖,通過imageio將其合成動(dòng)態(tài)圖,可以看到獎(jiǎng)牌榜分布隨著時(shí)間的變化情況。

          地圖繪制代碼

          import geopandas
          import matplotlib.colors
          import pycountry
          import matplotlib.pyplot as plt

          def alpha3code(column):
              CODE=[]
              for country in column:
                  try:
                      code=pycountry.countries.get(name=country).alpha_3
                      CODE.append(code)
                  except:
                      CODE.append('None')
              return CODE

          def draw_geo(geo_temp,col,kind,name,name2,cmap='Set3'):
              geo_temp['CODE']=alpha3code(geo_temp['English'])
              vmin = 0
              vmax = 40
              world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
              world.columns=['pop_est''continent''name''CODE''gdp_md_est''geometry']
              merge=pd.merge(world,geo_temp,on='CODE')

              ax = world.plot(figsize=(20,15), linewidth=0.25, edgecolor=background_color, color='lightgray')
              ax.axis('off')
              # ax.set_facecolor(background_color)
              merge.plot(column=col,figsize=(2015),cmap=cmap,ax=ax, legend=True,
                         legend_kwds={'shrink'0.5},vmin=vmin, vmax=vmax)

              ax.text(-175,112,f'{name}{name2}奧運(yùn)會(huì)',
                      fontsize=30,fontweight='bold',color='#323232')
              ax.text(-175,102,f'{kind}牌總數(shù)',
                      color='gray',fontsize=20)

              plt.show()
              plt.savefig(fname=f'{name}.png')

          Gif動(dòng)圖合成代碼

          import imageio
          def create_gif(image_list, gif_name, duration = 2):
              """
              生成Gif文件,原始圖像僅僅支持png格式
              image_list : 輸入圖像的路徑
              gif_name : 字符串,所生成的gif文件名,帶.gif文件名后綴
              duration : gif圖像時(shí)間間隔,這里默認(rèn)2s
              """

              # 創(chuàng)建一個(gè)空列表,用來存源圖像
              frames = [] 
              # 利用方法append把圖片挨個(gè)存進(jìn)列表 
              for image_name in image_list:
                  frames.append(imageio.imread(image_name))
              # 保存為gif格式的圖
              imageio.mimsave(gif_name, frames, 'GIF', duration = duration)
              return    
          def main(name):
              image_list = ['1984.png','1988.png','1992.png','1996.png','2000.png',
                            '2004.png''2008.png''2012.png','2016.png']
              gif_name = f'{name}.gif'
              duration = 1.5
              create_gif(image_list, gif_name)

          參考資料

          [1] 奧運(yùn)會(huì)logo圖片及數(shù)據(jù)來源維基百科: https://zh.wikipedia.org/wiki/夏季奧林匹克運(yùn)動(dòng)會(huì)
          [2] 奧運(yùn)歷史資料:https://baijiahao.baidu.com/s?id=1706677041934937288&wfr=spider&for=pc

          推薦閱讀

          這幾個(gè)用 Pyecharts 做出來的交互圖表,領(lǐng)導(dǎo)說叼爆了!

          看了這個(gè)總結(jié),其實(shí) Matplotlib 可視化,也沒那么難!

          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  三区在线观看 | 一级操逼网站 | 日韩精品在线一二三四五区 | 色情 视频网站入口第一集 | 国产avav |