大家好,我是欧K~
卡塔尔世界杯小组赛过半,本期利用python教大家制作 1930~2018年历届世界杯冠军图 ,希望对大家有所帮助。
世界杯每4年举办一次,冠军归属:
- 巴西最多,共获得5次世界杯冠军:1958年瑞典世界杯、1962年智利世界杯、1970年墨西哥世界杯、1994年美国世界杯、2002年韩日世界杯
- 意大利,共获得4次世界杯冠军:1934年意大利世界杯、1938年法国世界杯、1982年西班牙世界杯、2006年德国世界杯
- 德国,共获得4次世界杯冠军:1954年瑞士世界杯、1974年联邦德国世界杯、1990年意大利世界杯、2014巴西世界杯
- 乌拉圭,共获得2次世界杯冠军:1930年乌拉圭世界杯、1950年巴西世界杯
- 阿根廷,共获得2次世界杯冠军:1978年阿根廷世界杯、1986年墨西哥世界杯
- 英格兰,共获得1次世界杯冠军:1966年英格兰世界杯
- 法国,共获得1次世界杯冠军:1998年法国世界杯
先看看效果:
1. 数据
以下面格式为例:
2. 绘图
2.1 设置坐标范围
fig, ax = plt.subplots(1, 1,dpi=100) ax.set_xlim(-1, 24) ax.set_ylim(-6, 6) y_min,y_max = ax.get_ylim()
2.2 设置刻度、移动x轴
ax.get_yaxis().set_visible(False) ax.get_xaxis().set_visible(False) ax.xaxis.set_ticks_position('center') ax.xaxis.set_major_locator(MultipleLocator(1)) ax.spines['bottom'].set_position(('data', 0))
2.3 绘制世界杯flag
arr_img = mpimg.imread('世界杯.png') imagebox = OffsetImage(arr_img, zoom=0.1) ab = AnnotationBbox(imagebox, [0.5, 5], pad=0.02, frameon=False, alpha=0.1) ax.add_artist(ab)
2.4 绘制散点图
for i in range(len(years)): x_pos = i+1 x_tans = 0.2 size_t = champions.count(champions[i])*180 if i%2 == 0: y_data.append(4*0.4) ax.scatter(x_pos, y_max*0.4, s=size_t, color=dic_color[champions[i]],marker='o') ax.text(x_pos, y_max*0.4-0.2, f'{champions.count(champions[i])}', ha='center', va='bottom', fontsize=16, color='white',fontweight='heavy') #rotation ax.axvline(x=x_pos, ymin=0.525, ymax=.7, c=dic_color[champions[i]], lw=2,ls='--') ax.text(x_pos, -0.65, f'{years[i]}年', ha='center', va='bottom', fontsize=14, color='black') ax.text(x_pos, -1, f'({countries[i]})', ha='center', va='bottom', fontsize=12, color='black') ax.text(x_pos, y_max*0.4+0.5, f'{champions[i]}', ha='center', va='bottom', fontsize=18, color=dic_color[champions[i]], fontweight='heavy') else: y_data.append(-4*0.4) ax.scatter(x_pos, -y_max*0.4, s=size_t, color=dic_color[champions[i]],marker='o') ax.text(x_pos, -y_max*0.4-0.2, f'{champions.count(champions[i])}', ha='center', va='bottom', fontsize=16, color='white',fontweight='heavy') ax.axvline(x=x_pos, ymin=0.3, ymax=.477, c=dic_color[champions[i]], lw=2,ls='--') ax.text(x_pos, 0.33, f'{years[i]}年', ha='center', va='bottom', fontsize=14, color='black') ax.text(x_pos, 0.73, f'({countries[i]})', ha='center', va='bottom', fontsize=12, color='black') ax.text(x_pos, -y_max*0.4-0.93, f'{champions[i]}', ha='center', va='bottom', fontsize=18, color=dic_color[champions[i]
2.5 隐藏边线
for i in ['top', 'right', 'left', 'bottom']: ax.spines[i].set_visible(False)
2.6 设置标题
ax.text(5.25, 4.8, '1930~2018年历届世界杯冠军', fontdict={'color': '#FFB300', 'size': 36}, fontweight='heavy') ax.text(8.9, 4.3, '(制图@公众号:Python当打之年)', fontsize = 12, fontweight='heavy',alpha=1, color = '#FAFAFA'
完成效果如下图:
END
以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道