肝了三个晚上,终于复制了一张好看的图,图1 是原图,气泡图来表示三个维度的数据,颜色搭配很绝,简直是视觉上的享受😎!
🔧🔧使用工具:python matplotlib + PPT
🎨🎨绘制过程:
# 01. 读取本地 excel 数据
import pandas as pd
data = pd.read_excel('The 20 Fastest Growing Jobs in the Next Decade.xlsx')
# 选择x,y轴数据和第三个维度数据值(作为气泡大小)
x = data['Median annual wage'] / 1000
y = data['Percent employment change']
s = abs(data['Numeric employment change'])/20 # 把数据值变为绝对值,从而显示增长为负的数据
#02. 绘图
import matplotlib.pyplot as plt
fig,ax = plt.subplots(figsize=(12,18),dpi=600) # 设置画布大小和背景色,图片分辨率
#设置坐标系背景色
fig.set_facecolor("#EAE0D5")
#设置坐标系背景色
ax.patch.set_facecolor("#EAE0D5")
#设置颜色,将数据分为5类
colors = {1:'#91b8c7',2:'#ef9d6e',3:'#6BBBAE',4:'#7757B1',5:'#F0BF6A'}
#使用 scatter 方法绘制,传入两轴数据,气泡大小,颜色
ax.scatter(x = x,y=y,s=s, color=[colors[i] for i in data['color']],edgecolors='white',alpha = 0.9)#alpha 设置透明度,避免气泡遮挡
#设置y轴的名称和字体大小
ax.set_ylabel('Employment change %',fontsize=14,alpha=0.5)
#设置标题
ax.set_title(label = 'The 20 Fastest Growing Jobs in the Next Decade',fontsize=20)
# 在 y = 0 的位置绘制水平直线,当做 x 轴
ax.axhline(y=0,ls="-",c="black",alpha=0.5)
#设置水平直线的显示数据
ax.text(20,0.01,'$20k',fontsize=14,alpha=0.5)
ax.text(40,0.01,'$40k',fontsize=14,alpha=0.5)
ax.text(60,0.01,'$60k',fontsize=14,alpha=0.5)
ax.text(80,0.01,'$80k',fontsize=14,alpha=0.5)
ax.text(100,0.01,'$100k',fontsize=14,alpha=0.5)
# 设置水平直线的名称
ax.text(50,-0.02,'Median annual wage 2020',fontsize=14,alpha=0.5)
#设置两个轴的刻度标签
ax.set_yticklabels(['-60%','-40%','-20%','0','20%','40%','60%','80%'],fontsize=14,alpha=0.5)
ax.set_xticks([]) # 设为空
#关闭四周边框
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False);
ax.tick_params(left=False) # 不显示两轴刻度线
# 打开网格线,zorder 置于画布的较底层
ax.grid(alpha=0.2,zorder=-100)
# 保存图片
fig.savefig('new.jpg')
plt.show();
然后在PPT中加入说明和图例,最终美化就搞定啦
关注我,一起学习让数据图表更美丽的技巧!方法全分享!
评论取代码和数据,必回嗷
#python #数据可视化 #matplotlib #设计