大家好,我是志斌~
今天来给大家介绍一下如何通过Excel和Python进行绘制旋风图,如下图。
Excel绘制
首先,选中全部数据,然后点击【插入】→【图表】→【推荐的图表】→【所有图表】→【堆积条形图】。
然后,点击图表中掘金的数据,按鼠标右键选择【设置数据系列格式】→【次坐标轴】。
接着点击上坐标轴,然后按鼠标右键选择【设置数据系列格式】,将最大值和最小值分别设置为130和-130,并勾选下方【逆序刻度值】。
同理,点击下坐标轴,然后按鼠标右键选择【设置数据系列格式】,将最大值和最小值也分别设置为130和-130。
点击纵坐标轴,选择【标签】→【标签位置】,设置成低,我们这个关于掘金和勇士的旋风对比图就做好了。
在对图表进行一些优化,使它更加美观。
Python绘制
matplotlib可以轻松的绘制旋风图,如下图所示。
部分核心代码:
import matplotlib.pyplot as plt # 设置中文显示为微软雅黑 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] x = ["得分","篮板","助攻","抢断","盖帽","失误","罚球","三分","犯规"] y = [107,35,26,8,3,10,10,11,22] z = [123,41,33,5,7,12,21,16,22] # 增加一个固定维度,长度与上述数据一样 fix_value = [] # 求出数据y和z的最大值,取其1/4的值作为固定长度 value_max = max(max(y), max(z)) fix_temp = value_max / 4 for i in range(len(x)): fix_value.append(fix_temp) # 将y,z其中一个维度变为负值,我们选择z z_ne = [-i for i in z] # 设置画布大小 plt.figure(figsize=(8, 5)) # 画条形图,设置颜色和柱宽,将fix_value,y,z_ne依次画进图中 plt.barh(x, fix_value, color='w', height=0.5) plt.barh(x, y, left=fix_value, color='#037171', label='y', height=0.5) plt.barh(x, z_ne, color='#FF474A', height=0.5, label='z') # 添加数据标签,将fix_value的x标签显示出来,y和z_ne的数据标签显示出来 for a, b in zip(x, fix_value): plt.text(b / 2, a, '%s' % str(a), ha='center', va='center', fontsize=12) for a, b in zip(x, y): plt.text(b + fix_temp + value_max / 20, a, '%d' % int(b), ha='center', va='center') for a, b in zip(x, z): plt.text(-b - value_max / 20, a, '%d' % int(b), ha='center', va='center')
小结
- Excel和Python都有很强的绘图功能,有条件大家都可以学习掌握一下。
- 后台回复【旋风图】,即可获得源码和数据集。