前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python绘制饼状图

Python绘制饼状图

作者头像
阿黎逸阳
发布2021-02-08 11:23:34
发布2021-02-08 11:23:34
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

饼状图(pie chart)一般用于描述分类型数据的相对频数或百分数频数分布,呈现部分与总体的关系。

一、导入绘图数据

首先导入绘图所需的数据。

代码语言:javascript
代码运行次数:0
运行
复制
import osimport pandas as pd
os.chdir(r'F:\公众号\6.学习python')   #设置成存放数据文件夹路径date = pd.read_csv("股票数据.csv", encoding = 'GBK')    #读取数据

展示前几行数据如下:

二、饼状图

1 饼状图绘图原理

Python中绘制饼状图需用matplotlib.pyplot中的pie函数,该函数的基本语法为:

代码语言:javascript
代码运行次数:0
运行
复制
pie(x, [explode], [labels], [colors], [autopct], [pctdistance],  [labeldistance], [startangle], [radius], [textprops], **kwargs)

参数说明:

x:数组,绘制饼状图的数据。

[explode]:默认值为None的可选参数。若非None,则是和x相同长度的数组,用来指定每部分的离心偏移量。

[labels]:列表,指定每个饼块的名称,默认值None,为可选参数。

[colors]:特定字符或数组,指定饼图的颜色,默认值None,为可选参数。

[autopct]:特定字符,指定饼图中数据标签的显示方式,默认值None,为可选参数。

[pctdistance]:浮点数,指定显示比例距离圆心的距离。默认值0.6,为可选参数。

[labeldistance]:浮点数,指定每个扇形对应标签与圆心的距离,默认值1.1,为可选参数。

[startangle]:浮点数,指定从x轴逆时针旋转饼图的开始角度,默认值None,为可选参数。

[radius]:浮点数,指定饼图的半径,默认值1,为可选参数。

[textprops]:字典,设置文本对象的字典参数,默认值None,为可选参数。

**kwargs:不定长关键字参数,用字典形式设置条形图的其它参数。

2 绘制饼状图

以每年股票成交笔数总计值绘制饼状图,具体语句如下:

代码语言:javascript
代码运行次数:0
运行
复制
import matplotlib.pyplot as plt                #导入绘图包
plt.rcParams['font.sans-serif'] = ['SimHei']   #解决中文显示问题plt.rcParams['axes.unicode_minus'] = False    # 解决中文显示问题
date = date.set_index('日期')                 #把日期列设为索引date.index = pd.to_datetime(date.index)       #把索引转为时间格式result = date[['成交笔数']].groupby(date.index.year).sum()           #按年总计股票成交笔数plt.pie(result['成交笔数'], labels=result.index, autopct='%3.1f%%')  #以时间为标签,总计成交笔数为数据绘制饼图,并显示3位整数一位小数plt.title('股票每年成交笔数饼图')             #加标题plt.show()

‍得到结果如下:

3 绘制饼状图并更改显示字体特征

以每年股票成交笔数总计值绘制饼状图,更改字体颜色、尺寸并加粗,具体语句如下:

代码语言:javascript
代码运行次数:0
运行
复制
plt.pie(result['成交笔数'], labels=result.index, autopct='%3.1f%%', textprops={'color':'b', 'size':10, 'weight':'bold'})  #设置显示字体颜色、尺寸、加粗plt.title('股票每年成交笔数饼图', c='b')             #加标题plt.show()

得到结果如下:

4 绘制指定离心偏移量饼状图

以每年股票成交笔数总计值为数值,标准化换手率为离心偏移量绘制饼状图,具体语句如下:

代码语言:javascript
代码运行次数:0
运行
复制
result = date.groupby(date.index.year).agg(sum=('成交笔数', 'sum'), avg=('换手率', 'mean'))  #计算每年成交笔数总计值,换手率均值plt.pie(result['sum'], explode=result['avg']/result['avg'].max(), labels=result.index, autopct='%3.1f%%')  #以成交笔数总计值为数值,标准化换手率为离心值绘制饼状图                                                   plt.show()

得到结果如下:

5 绘制多重显示饼状图

根据每年股票成交笔数总计值为数值、标准化换手率为颜色绘制饼图,具体语句如下:

代码语言:javascript
代码运行次数:0
运行
复制
import matplotlib.cm as cm  #导入库
result = date.groupby(date.index.year).agg(sum=('成交笔数', 'sum'), avg=('换手率', 'mean'))  #计算每年成交笔数总计值,换手率均值plt.pie(result['sum'], colors=cm.ScalarMappable().to_rgba(result['avg']), labels=result.index, autopct='%3.1f%%') #根据换手率均值设置颜色绘制饼图plt.title('绘制每年股票成交笔数总计值为数值、标准化换手率为颜色的饼图')  #设置标题sm = plt.cm.ScalarMappable(norm=plt.Normalize(vmin=result['avg'].min(), vmax=result['avg'].max()))plt.colorbar(sm)           #根据换手率均值的从小到大显示颜色plt.show()

得到结果如下:

6 绘制嵌套饼状图

以每年股票成交笔数总计值绘制外圈,设置饼块保留外圈的20%,边框颜色为白色。

以每年换手率均值绘制内圈,半径为原来的80%,字体显示在距圆心50%的地方。具体语句如下:

代码语言:javascript
代码运行次数:0
运行
复制
result = date.groupby(date.index.year).agg(sum=('成交笔数', 'sum'), avg=('换手率', 'mean'))  #计算每年成交笔数总计值,换手率均值plt.pie(result['sum'], pctdistance=0.9, wedgeprops={'width':0.2, 'edgecolor':'w'}, labels=result.index, autopct='%3.1f%%') #绘制外圈plt.pie(result['avg'], pctdistance=0.5, radius=0.8, autopct='%3.1f%%')  #绘制内圈plt.show()

得到结果:

至此,在Python中绘制饼状图已全部讲解完毕,感兴趣的同学可以自己实现一遍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档