最全Python绘制饼形图(饼状图)
饼状图(pie chart)一般用于描述分类型数据的相对频数或百分数频数分布,呈现部分与总体的关系。
一、导入绘图数据
首先导入绘图所需的数据。
import os
import pandas as pdos.chdir(r'F:\公众号\6.学习python') #设置成存放数据文件夹路径
date = pd.read_csv("股票数据.csv", encoding = 'GBK') #读取数据
注:如需文中数据进行练习,可到公众号中回复“股票数据波动”即可免费获取。展示前几行数据如下:
二、饼状图
1 饼状图绘图原理
Python中绘制饼状图需用matplotlib.pyplot中的pie函数,该函数的基本语法为:
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 绘制饼状图
以每年股票成交笔数总计值绘制饼状图,具体语句如下:
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 绘制饼状图并更改显示字体特征
以每年股票成交笔数总计值绘制饼状图,更改字体颜色、尺寸并加粗,具体语句如下:
plt.pie(result['成交笔数'], labels=result.index, autopct='%3.1f%%', textprops={'color':'b', 'size':10, 'weight':'bold'}) #设置显示字体颜色、尺寸、加粗
plt.title('股票每年成交笔数饼图', c='b') #加标题
plt.show()
得到结果如下:
4 绘制指定离心偏移量饼状图
以每年股票成交笔数总计值为数值,标准化换手率为离心偏移量绘制饼状图,具体语句如下:
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 绘制多重显示饼状图
根据每年股票成交笔数总计值为数值、标准化换手率为颜色绘制饼图,具体语句如下:
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%的地方。具体语句如下:
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中绘制饼状图已全部讲解完毕,感兴趣的同学可以自己实现一遍图片。
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)
长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。
最全Python绘制饼形图(饼状图)相关推荐
- Jpgraph php怎么变异,php使用Jpgraph绘制3D饼状图的方法
此文实例介绍了php使用Jpgraph绘制3D饼状图的方法.分享给大伙供大家参考.具体实现方法如下: include ("src/jpgraph.php"); include (& ...
- 前端基础学习之h5-canvas入门3-曲线的绘制及绘制完整饼状图
canvas直线绘制及绘制完整折线图 canvas一些基础的概念在直线绘制中已经提过.下面主要提曲线和文本绘制,以完成一个完整饼状图的绘制. (一)曲线的绘制 弧度概念 1 弧度 = 1 r(半径) ...
- Python使用matplotlib设置pandas绘制的饼状图扇形标签
2021年全国高校Python课程高级研修班(线上) 中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN ...
- matplotlib 绘制并列饼状图
废话不说,先上图.这个是实际效果. import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中 ...
- echarts绘制百家姓饼状图
echarts ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求. ECharts 遵循 Apache-2.0 开源协议,免费商用. ECharts ...
- Ehcarts绘制3D饼状图
需要用到echarts.min.js和echarts-gl.min.js 网上找了半天没找到靠谱的自己查资料弄一个了方便自己以后看 直接复制到html文件中即可运行 <!DOCTYPE html ...
- python立体感的饼状图如何做_AI教程:如何制作3D立体饼状图表?
原标题:AI教程:如何制作3D立体饼状图表? 辛辛苦苦分析一堆大数据,竟然没人看!到底怎么办?俗话说,有图有真相,一图胜千言,取悦了眼球,剩下的都好说.如果你正着手于从数据中洞察出有用信息,那你所需要 ...
- Origin2017绘制3D饼状图 去掉指定图例
Origin在绘制饼状图时,有时只想显示部分图例,如下图所示: 针对此,可以先绘制图像. 这里可以看到所有的图例都例举出来了.针对此,可以双击图例部分.可以看到图例变成了下面的内容: 针对这个,可以进 ...
- python做房源饼状图_python使用matplotlib画饼状图
%matplotlib inlineimport matplotlib.pyplot as plt# 121 > 1行2列第1个fig1 = plt.subplot(121)plt.pie([1 ...
最新文章
- StringBuilder内存碎片对性能的影响
- 非x面容解锁插件ios13_iOS13.5 Beta3 推送,戴口罩解锁更加方便
- SAP License:后SAP ECC 6.0 时代
- cleanlab(解决图像标记错误)
- Android运行时修改Manifest,Android如何动态修改Manifest文件
- GBK与UNICODE编码互转
- OPPO设备设置第三方桌面为默认Launcher
- 松弛型内存模型(Relaxed memory models)的一个有趣的例子
- 冬吃萝卜有讲究 名中医解疑惑
- 泡泡网 前有古人后有来者! 胶水处理器回顾
- shadowgun的飘扬旗帜shader
- 计算机工程好发论文么,计算机工程期刊发表论文有什么要求
- 动漫,简史早期的日本动画
- 【前端程序员的中秋节】中秋节,送你千盏孔明灯,万家灯火故事长
- 数据结构中树的直径问题
- flickr 的全局主键生成方案
- 使用SQL获取当前周别,oracle日期处理
- 善用产业大数据平台,赋能产业数字化转型升级
- Python学习七(线程)
- 摩根大通的最新指南——将AI应用于算法交易