matplotlib 饼图

2019-08-14 16:03:13 浏览数 (1)

饼图用来显示展示数据的比例分布特征。matplotlib 中 使用 pie() 函数来绘制饼图。

代码语言:javascript复制
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

matplotlib.rcParams["font.sans-serif"] = ["SimHei"]

X = [0.4,0.25,0.35]
labels =["甲","乙","丙"]
colors = ["r", "g","c"]
plt.pie(X,labels = labels, colors =colors,autopct='%2.1f%%')
plt.show()

其中,

X 是数据,类型是python序列或者numpy数组,若sum(x)>1, 则会使用归一化的数据,保证总和100%。

labels是分组标签序列,colors是颜色序列。

autopct 设置格式,显示数据百分比。'%2.1f%%'指小数点前和小数点后的位数(没有用空格补齐),以百分数格式显示。

我们可以设置更多的关键字参数:

代码语言:javascript复制
plt.pie(X,labels = labels, colors =colors,autopct='%2.1f%%',pctdistance =0.6,labeldistance =1.2,
        shadow =True,startangle =90, explode =[0.02,0.02,0.1], textprops =dict(color ="r",fontsize=14) )

其中,

pctdistance 表示 百分比数据的相对位置(1代表1倍的半径)。

labeldistance 表示分组标签的相对位置(1代表1倍的半径)。

shadow =True 表示显示阴影。

startangle 表示第一个饼块的起始边与x轴正方向的角度。

explode 饼块炸开,设置各饼块偏离的百分比。

textprops 饼图文字属性字典

通过设置相宜的参数,饼图还可以嵌套绘制:

代码语言:javascript复制
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.rcParams["font.sans-serif"] = ["SimHei"]

X = [0.4,0.25,0.35]
Y =[0.1,0.2,0.4,0.3]
labels1 =["甲","乙","丙"]
labels2 =["天","干","地","支"]
colors1 = ["r", "g","c"]
colors2 = ["b", "purple","y","m"]
help(plt.pie)
plt.pie(X,labels = labels1, colors =colors1,autopct='%2.1f%%',pctdistance = 0.85,
        labeldistance =1.1,radius=1, wedgeprops=dict(width =0.3,edgecolor='r'))
plt.pie(Y,labels = labels2, colors =colors2,autopct='%2.1f%%',pctdistance = 0.7, 
        labeldistance =0.25,radius=0.7, wedgeprops=dict(width =0.4,edgecolor='r'))
plt.legend(loc="upper right")
plt.show()

其中,

radius为饼块外圈的半径,相对值。

wedgeprops为饼块参数字典,其参数width表示饼块径向厚度,edgecolor表示边缘颜色。

0 人点赞