饼图用来显示展示数据的比例分布特征。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表示边缘颜色。