python画函数图像时在某一点无意义_matplotlib 知识点11:绘制饼图(pie 函数精讲)...

饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。

画饼图用到的方法为:matplotlib.pyplot.pie( )

#!/usr/bin/env python#!-*-coding:utf-8 -*-#!@Author : Biyoulin#!@Time : 2018/9/4 10:45

importmatplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

labels= ['娱乐','育儿','饮食','房贷','交通','其它']

sizes= [2,5,12,70,2,9]

explode= (0,0,0,0.1,0,0)

plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)

plt.title("饼图示例-8月份家庭支出")

plt.show()

1428331-20180904111320562-395435358.png

上面的图形为椭圆形,可加入以下一条命令将之显示为长宽相等的饼图。

plt.axis('equal') #该行代码使饼图长宽相等

1428331-20180904111648667-248488776.png

pie 函数格式:

def pie(x, explode=None, labels=None, colors=None, autopct=None,

pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,

radius=None, counterclock=True, wedgeprops=None, textprops=None,

center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)

pie 函数参数详解,英文原版请参见:matplotlib官网pie函数:

x :(每一块)的比例,如果sum(x) >1会使用sum(x)归一化;

labels :(每一块)饼图外侧显示的说明文字;

explode :(每一块)离开中心距离;

startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;

shadow :在饼图下面画一个阴影。默认值:False,即不画阴影;

labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;

autopct :控制饼图内百分比设置,可以使用format字符串或者format function'%1.1f'指小数点前后位数(没有用空格补齐);

pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;

radius :控制饼图半径,默认值为1;counterclock:指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。

wedgeprops:字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={'linewidth':3}设置wedge线宽为3。

textprops:设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。

center:浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。

frame:布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。

rotatelabels:布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。

pie()函数各参数示例:

importmatplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

labels= 'A','B','C','D'sizes= [10,10,10,70]

plt.pie(sizes,labels=labels)

plt.title("饼图详解示例")

plt.text(1,-1.2,'By:Biyoulin')

plt.show()

1428331-20180906132934169-125796446.png

1、x:每一块饼图的比例,为必填项,如果sum(x)>1,会将多出的部分进行均分;

sizes = [10,10,20,60]

1428331-20180906132953451-240501775.png

2、labels : 每一块饼图外侧显示的说明文字;

labels = 'A','B','C','Change'

1428331-20180906133028413-1940471983.png

3、explode : 每一块饼图 离开中心距离,默认值为(0,0),就是不离开中心;

explode = (0,0,0.1,0) #将第三块分离出来

1428331-20180906133042026-215796469.png

4、colors:数组,可选参数,默认为:None;用来标注每块饼图的matplotlib颜色参数序列。如果为None,将使用当前活动环的颜色。

colors = ['r','g','y','b'] #自定义颜色列表

plt.pie(sizes,explode=explode,labels=labels,colors=colors)

1428331-20180906133053637-2074739324.png

5、shadow :是否阴影,默认值为False,即没有阴影,将其改为True,显示结果如下图所示;

plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=True) # 添加阴影

1428331-20180906133103905-637221066.png

6、autopct :控制饼图内百分比设置,可以使用format字符串或者format function;

'%1.1f':指小数点后保留一位有效数值;

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f',shadow=True)

1428331-20180906133156037-1294925751.png

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',shadow=True) #保留两位小数点,增加百分号(%);

1428331-20180906133217887-219748646.png

7、startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定startangle=90则从y轴正方向画起;

plt.pie(sizes,explode=explode,labels=labels,

colors=colors,autopct='%1.2f%%',shadow=True,startangle=30)

1428331-20180906133230156-870000116.png

8、counterclock:指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。

plt.pie(sizes,explode=explode,labels=labels,

colors=colors,autopct='%1.2f%%',shadow=True,startangle=30,counterclock=False)

1428331-20180906133414347-570995414.png

9、labeldistance : label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧,默认值为1.1;

plt.pie(sizes,explode=explode,labels=labels,colors=colors,

autopct='%1.2f%%',shadow=True,labeldistance=0.8,startangle=30,counterclock=False)

1428331-20180906133844858-875437171.png

10、radius :控制饼图半径;浮点类型,可选参数,默认为:None。如果半径是None,将被设置成1。

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',

shadow=True,labeldistance=0.8,startangle=30,radius=1.3,counterclock=False)

1428331-20180906134024422-532699163.png

11、pctdistance : 类似于labeldistance,指定autopct的位置刻度,默认值为0.6;

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',

pctdistance=0.4,shadow=True,labeldistance=0.8,startangle=30,radius=1.3,counterclock=False)

1428331-20180906134111221-273938310.png12、textprops:设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',

pctdistance=0.4,shadow=True,labeldistance=0.8,startangle=30,radius=1.3,

counterclock=False,textprops={'fontsize':20,'color':'black'})

1428331-20180906171725428-1157453999.png

13、将饼图显示为正圆形,plt.axis( );

plt.axis('equal')

1428331-20180906171832379-1306233268.png

14、添加图例,plt.legend( );

plt.legend(loc="upper right",fontsize=10,bbox_to_anchor=(1.1,1.05),borderaxespad=0.3)#loc = 'upper right' 位于右上角#bbox_to_anchor=[0.5, 0.5] # 外边距 上边 右边#ncol=2 分两列#borderaxespad = 0.3图例的内边距

1428331-20180906172013950-267771945.png

15、保存图表,plt.savefig( );

plt.savefig("C:\\饼图02.png",dpi=200,bbox_inches='tight')

1428331-20180906172117283-1912404922.png

ContractedBlock.gif

ExpandedBlockStart.gif

1 #!/usr/bin/env python

2 #!-*-coding:utf-8 -*-

3 #!@Author : Biyoulin

4 #!@Time : 2018/9/4 16:43

5

6 importmatplotlib.pyplot as plt7 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

8

9 #labels = 'A','B','C','D'

10 labels = 'A','B','C','Change'

11 #sizes = [10,10,10,70]

12 sizes = [10,10,20,60]13 explode = (0,0,0.1,0)14 colors = ['r','g','y','b']15

16 plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',17 pctdistance=0.4,shadow=True,labeldistance=0.8,startangle=30,radius=1.3,18 counterclock=False,textprops={'fontsize':20,'color':'black'})19

20 plt.title("饼图详解示例")21 plt.text(1,-1.2,'By:Biyoulin')22 plt.axis('equal')23 plt.legend(loc="upper right",fontsize=10,bbox_to_anchor=(1.1,1.05),borderaxespad=0.3)24 #loc = 'upper right' 位于右上角

25 #bbox_to_anchor=[0.5, 0.5] # 外边距 上边 右边

26 #ncol=2 分两列

27 #borderaxespad = 0.3图例的内边距

28

29 plt.savefig("C:\\饼图02.png",dpi=200,bbox_inches='tight')30 plt.show()

饼图示例完整代码

作者:biyoulin

版权声明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值