Compreensão do parâmetro bbox_to_anchor no gráfico de pizza plt.pie() e plt.legend() da visualização matplotlib

  • 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).
 

Acho que você gosta

Origin blog.csdn.net/weixin_46707493/article/details/119837887
Recomendado
Clasificación