import matplotlib as mpl
import matplotlib.pyplot as plt
设置图片大小
plt.figure(figsize = (20, 8))
生成数据
labels = [‘A’, ‘B’, ‘C’, ‘D’, ‘other’]
share_laptop = [0.45, 0.25, 0.15, 0.05, 0.10]#外环的数据
share_pc = [0.35, 0.35, 0.08, 0.07, 0.15]#内环的数据
colors = [‘c’, ‘r’, ‘y’, ‘g’, ‘gray’]#定义所有数据的颜色,为了对比刚好内环外环的颜色也统一
外环
wedges1, texts1, autotexts1 = plt.pie(share_laptop,
#wedge是饼片(每一个扇形),text是分类标签中的文本列表,autotext是百分比部分的文本列表,这三个属性必须全部出现,否则均会报错
autopct = “%3.1f%%”,
radius = 1,
pctdistance = 0.85,
colors = colors,
startangle = 180,
textprops = {‘color’: ‘w’},
wedgeprops = {“width”: 0.3, ‘edgecolor’: ‘g’}#’'与""没有区别,主要是python2(好像是)留下来的遗留问题,可忽略
#外侧的标签备注信息的边框颜色也跟最外侧的环形边界颜色相同(lebels)
)
内环
wedges2, texts2, autotexts2 = plt.pie(share_pc,
autopct = ‘%3.1f%%’,
radius = 0.7,
pctdistance = 0.95,#饼图中心到auxtotext的距离
#pctdistance 与radius是相互对应的,设置了半径,后面设置了宽度,这样在半径与宽度之间,pctdistance这个属性才有使用的意义
colors = colors,
startangle = 180,
# 起始的第一个属性,倾斜角度
textprops = {‘color’: ‘b’},#text设置的饼图中显示百分比例数字的字体颜色
#textprops = dict(color=‘w’),这两种的作用是一样的,第一种用{}表示字典,第二种用dict声明字典
wedgeprops = {‘width’: 0.4, ‘edgecolor’: ‘b’}#环的宽度,还有环的最外侧的边界颜色
#用中括号表示比用dict表示更加简洁
)
图例
plt.legend(wedges1,
labels,
fontsize = 12,
title=“all”,
loc= ‘upper left’,
bbox_to_anchor = (1, 0.8))#确定图例在轴的相对位置,第一个参数是x,第二个是y
设置文本样式
plt.setp(autotexts1, size=8, weight=‘bold’)
plt.setp(autotexts2, size=8, weight=‘bold’)
plt.setp(texts1, size=100)#setp()对一个列表或者单个对象进行设置
标题
plt.title(‘all data’, fontsize=20)
plt.show()