Python大数据分析4:饼状图绘制

前面所介绍的一些图例更多的是展示数据本身数值的大小,而饼状图不一样,更侧重于展示数据的相对大小。

首先我们得到每年该股票的成交笔数总和,然后直接进行饼状图绘制:

results = frame[[‘成交笔数’]].groupby(frame.index.year).sum()

plt.pie(results[‘成交笔数’])

plt.show()

从中可以明显看出不同年份占据的比例,也就是相对大小,具体数值的绝对值大小往往不能有效的直观反映。

为了将数据展示的更为清楚,我们可以加上必要的数据信息:

plt.pie(results[‘成交笔数’], labels=results.index, autopct=’%3.1f%%’)

plt.show()

这里的labels用于显示每个饼块的标签,autopct可以设置每个饼块的占比数值及其格式,这里3表示三位整数,1表示一位小数,后面再加一个百分号,前后的百分号用于标记。

大家要注意,第一个年份2011是从0度方向开始,直至逆时针环绕一圈。

此时也可以调整下字体,以更适合显示效果:

plt.pie(results[‘成交笔数’], labels=results.index, autopct=’%3.1f%%’,

        textprops={‘color’: ‘b’, ‘size’: 15, ‘weight’: ‘bold’})

plt.show()

其中的textprops中使用字典分别设置了颜色、大小和黑体。

当然具体效果要综合实际搭配才能看的出来。

和前面图形一样,饼状图也提供了显示多种数据的途径。比如我们可以利用饼块与中心的分离距离来表示其他数据:

results = frame.groupby(frame.index.year).agg(sum=(‘成交笔数’, ‘sum’), avg=(‘换手率’, ‘mean’))

plt.pie(results[‘sum’], explode=results[‘avg’]/results[‘avg’].max(), labels=results.index, autopct=’%3.1f%%’)

plt.show()

这里我们也获取了换手率的年度平均值,按照与它最大值之比,设置为饼块与中心的分离距离。

从结果可以看到,离中心越远的,换手率越大,比如2011年和2015年的最大,也最远。explode效果非常不错,特别用于突出显示其中明显的数据块。

也可以使用柱状图中利用颜色表示数据大小的方式:

plt.pie(results[‘sum’], colors=cm.ScalarMappable().to_rgba(results[‘avg’]), labels=results.index, autopct=’%3.1f%%’)

sm = plt.cm.ScalarMappable(norm=plt.Normalize(vmin=results[‘avg’].min(), vmax=results[‘avg’].max()))

plt.colorbar(sm)

plt.show()

这里仍然能够看出2011年和2015年换手率最大。

饼状图还可以使用一种较为有效的重叠显示方式来展示更多数据。我们可以首先可以先将现有饼图收缩下:

plt.pie(results[‘sum’], wedgeprops={‘width’: 0.2, ‘edgecolor’: ‘w’}, labels=results.index, autopct=’%3.1f%%’)

plt.show()

其中,wedgeprops属性中的width宽度就是说明将现有饼块的半径保留到0.2。

从图中可以看出,从外面向圆心保留20%,成为一个扇形,边为白色。

但是原有的文字标签还是居中对齐,位于整个圆心半径的中间。

为此可以再次调整标签的位置:

plt.pie(results[‘sum’], pctdistance=0.9, wedgeprops={‘width’: 0.2, ‘edgecolor’: ‘w’}, labels=results.index, autopct=’%3.1f%%’)

plt.show()

大家可以想一想,0.9这个单位正好位于20%的中间。

图中看的很清楚,其实大家可以自己多尝试来调节出更多的实际效果。

我们在里面再增加一个扇形:

plt.pie(results[‘avg’], pctdistance=0.5, radius=0.8, autopct=’%3.1f%%’)

plt.show()

这里的关键是设置饼块的半径,0.8表示80%,正好嵌入在刚才圆形中间的空白处。pctdistance为0.5表示标签居中显示。

也可以将里面的扇形也通过缩小的方式来设置:

plt.pie(results[‘avg’], pctdistance=0.85, wedgeprops={‘width’: 0.2, ‘edgecolor’: ‘w’}, radius=0.8, autopct=’%3.1f%%’)

plt.show()

这里的方法不变,大家能看出设置的技巧吗?可以自己大胆调节尝试下。

Python大数据分析4:饼状图绘制》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注