- Função função: Indica a proporção de variáveis discretas
- Resposta:plt.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 =Nenhum, textprops=Nenhum, centro=(0, 0), frame=Falso)
- Descrição do parâmetro:
- x: especifica os dados para plotagem
- explodir: Especifica o destaque de certas partes do gráfico de pizza, ou seja, uma explosão
- rótulos: adicione descrições de rótulos para gráficos de pizza, semelhantes às descrições de legenda
- cores: especifique a cor de preenchimento do gráfico de pizza
- autopct: Adiciona automaticamente exibição de porcentagem, que pode ser exibida de forma formatada
- pctdistance: Defina a distância entre o rótulo de porcentagem e o centro do círculo
- shadow: se deseja adicionar o efeito de sombra do gráfico de pizza
- labeldistance: Defina a distância entre cada rótulo de setor (legenda) e o centro do círculo;
- startangle: defina o ângulo de posicionamento inicial do gráfico de pizza;
- raio: defina o raio do gráfico de pizza;
- counterclock: Se o gráfico de pizza deve aparecer no sentido anti-horário;
- wedgeprops: Defina as propriedades dos limites interno e externo do gráfico de pizza, como a espessura e a cor da linha de limite;
- textprops: Defina as propriedades do texto no gráfico de pizza, como tamanho da fonte, cor, etc.;
- centro: Especifique a posição do ponto central do gráfico de pizza, o padrão é a origem
- quadro: se deseja exibir o quadro atrás do gráfico de pizza, se definido como True, você precisa controlar o intervalo do eixo x e do eixo y do quadro e a posição central do gráfico de pizza ao mesmo tempo;
1. Desenhe um gráfico de pizza simples:
2. Gráfico de anel: desenhe pelo parâmetro wedgecolor = {'width':0.5}, e o valor personalizado 0,5 representa a largura do gráfico de anel
3. Desenhe um gráfico de pizza complexo com vários parâmetros:
#构造数据:某城镇受教育程度
education = [9823, 5601, 3759, 1400, 450]
labels = ['小学', '初中', '高中', '大学', '研究生及以上']
explode = [0,0,0,0.2,0.3] # 用于突出显示特定人群
# 自定义颜色,更多颜色参考颜色网站:https://xkcd.com/color/rgb/
colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555']
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则可能为椭圆
plt.axes(aspect='equal')
# 绘制饼图
plt.pie(x = education, # 绘图数据
explode=explode, # 突出显示特定人群
labels=labels, # 添加教育水平标签
colors=colors, # 设置饼图的自定义填充色
autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
pctdistance=0.7, # 设置百分比标签与圆心的距离
labeldistance = 1.15, # 设置教育水平标签与圆心的距离
startangle = 180, # 设置饼图的初始角度
radius = 1.5, # 设置饼图的半径
counterclock = False, # 是否逆时针,这里设置为顺时针方向
# 设置饼图内外边界的属性值:linewidth表示饼图内外边框线宽度;width表示饼图内外宽度,可控制生成环形图;edgecolor表示边框线的颜色
wedgeprops = {'linewidth': 1.5,'width':0.5, 'edgecolor':'green'},
textprops = {'fontsize':12, 'color':'k'}, # 设置文本标签的属性值
center = (0,0), # 设置饼图的原点
frame = 0) # 是否显示饼图的图框,这里设置不显示
# 显示图形
plt.show()
4. Gráfico de anel incorporado: usado para analisar a comparação de dois grupos de dados com a mesma categoria
Desenhe definindo wedgeprops={'width':num} com o raio do raio e a largura do gráfico de anéis
Exemplo: Analisando a proporção de ingredientes em dois bolos de morango
# 自定义颜色图列表
colormaplist = ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]
elements =['面粉','糖','奶油','草莓','坚果']
weight1 = [40,15,20,10,15]
weight2 = [30,25,15,20,10]
plt.pie(weight1,
autopct="%3.1f%%", # 百分比显示格式
radius=1, # 半径
pctdistance=0.85, # 百分比文本距离圆心距离
colors=colormaplist, # 颜色
textprops=dict(color= "w"), # 文本设置
labels = elements, # 各类别标签
wedgeprops=dict(width=0.3, edgecolor = 'w')) # 饼图内外边格式设置
plt.pie(weight2,
autopct="%3.1f%%",
radius=0.7,
pctdistance=0.75,
colors=colormaplist, #内环形图也使用相同的颜色图,否则会出现同类别的两个数据颜色不对应,不利于观测分析
textprops=dict(color= "w"),
wedgeprops=dict(width=0.3, edgecolor = 'w'))
# 通过legend函数中的loc和bbox_to_anchor参数控制图例位置
# bbox_to_anchor = (x,y,width,height)具体四个参数含义在后面解释
plt.legend( loc = 'center right',bbox_to_anchor = (1.15,0,0.3,1),fontsize = 15)
plt.title('两种草莓蛋糕中配料的比例对比图',fontsize = 17)
plt.show()
5. A compreensão dos quatro parâmetros em bbox_to_anchor = (x, y, largura, altura) em plt.legend()
1) O parâmetro bbox_to_anchor é usado para melhor controlar e ajustar a posição da caixa de legenda
2) x, y representam a posição da coordenada de um determinado ponto do quadro da legenda, e quanto a onde esse ponto está, depende do parâmetro loc em plt.legend, por exemplo: loc = 'center', então x, y representa o ponto central da posição do quadro da legenda;
3) largura indica a distância que a posição inicial do quadro da legenda original representada por x, y é movida horizontalmente (a partir da largura do quadro da legenda original);
altura indica quanto a posição inicial da caixa da legenda original representada por x, y é movida verticalmente (a altura da caixa da legenda original);
O seguinte é usado como um diagrama para entender:
fig,ax = plt.subplots(2,1,figsize = (8,5))
ax[0].scatter(0.5,0.5,label = '(0.5,0.5,0,0)')
ax[0].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0,0),prop={'size':20})
ax[0].set_xlim(0,1)
ax[0].set_ylim(0,1)
ax[1].scatter(0.5,0.5,label = '(0.5,0.5,0.5,0.5)')
ax[1].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0.5,0.5),prop={'size':20})
ax[1].set_xlim(0,1)
ax[1].set_ylim(0,1)
plt.subplots_adjust(hspace=0.2)
plt.show()
Pode-se observar na primeira subfigura acima que: o vértice superior direito ('superior direito') da caixa da legenda corresponde ao ponto (0.5,0.5); na segunda subfigura: quando a largura e a altura são definido como 0,5, significa a distância da nova caixa de legenda A posição da caixa de legenda original está a uma distância horizontal e vertical de 0,5, e a posição do vértice superior direito da nova caixa de legenda é (1,1).