查看原文
其他

Python可视化29|matplotlib-饼图(pie)

pythonic生物人 pythonic生物人 2022-09-10

"pythonic生物人"的第74篇分享

本文详细介绍python 使用matplotlib.pyplot.pie绘制饼图(pie)

本文快速预览

更多好文,欢迎随缘关注@pythonic生物人

目录

默认参数 
修改配色 
饼图某部分突出or爆炸显示
格式化显示每部分数据
圈中文字与中心距离
周围标签名与中心距离
饼图开始角度
饼图半径
顺时针or逆时针显示
饼图框属性设置
饼图中文本属性 
饼图高度个性化设置
添加图例

matplotlib.pyplot.pie

语法:matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)

  • 默认参数

import matplotlib.pyplot as plt
import palettable 
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],#指定绘图数据
        labels=['A','B','C'],#为饼图添加标签说明
       )
plt.show()
  • 修改配色

关于颜色的使用可看之前的文章,有详细介绍:一文搞定python颜色盘

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"],#修改饼图颜色,传入颜色list
        #colors=plt.cm.get_cmap('Set3')(range(5)),#使用matplotlib自带颜色
        #colors=palettable.cartocolors.qualitative.Bold_9.mpl_colors,#使用palettable配色库
        
       )
plt.show()
  • 饼图某部分突出or爆炸显示

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        explode=(00.20),#某部分突出显示,值越大,距离中心越远,该法可解决饼图字体重叠的问题
       )
plt.show()
  • 格式化显示每部分数据

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',#格式化输出百分比
       )
plt.show()
  • 圈中文字与中心距离

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        pctdistance=0.8,#百分比标签与圆心的距离
       )
plt.show()
  • 周围标签名与中心距离

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        labeldistance=1.5,#labels与圈边界的距离,默认为1.1        
       )
plt.show()
  • 饼图开始角度

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        startangle=45,#饼图的开始角度,默认为0度
       )
plt.show()
  • 饼图半径

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        radius=1.3,#饼图半径,默认为1
       )
plt.show()
  • 顺时针or逆时针显示

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        counterclock=False,#关闭逆时针显示
       )
plt.show()
  • 饼图框属性设置

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        #设置框属性
        wedgeprops={'edgecolor':'r',#内外框颜色
                    'linestyle':'--',#线型
                    'alpha':0.5,#透明度
                    #更多参考matplotlib.patches.Wedge                   
                    
                   }
       )
plt.show()
  • 饼图中文本属性

my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
plt.pie(x=[1,2,3],
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        #饼图中文本的属性
        textprops={'color':'r',#文本颜色
                   'fontsize':16,#文本大小
                   'fontfamily':'Microsoft JhengHei',#设置微软雅黑字体
                   #更多参考matplotlib.pyplot.text                 
                  
                  
                  }
        
       )
plt.show()
  • 饼图高度个性化设置

每一部分特异设置
饼图中每一部分都可以拆开单独个性化设置。
plt.pie返回以下三个对象,相应个性化设置都可参考Matplolib详细文档:

  • matplotlib.patches.Wedge
  • matplotlib.text.Text
  • matplotlib.text.Text
my_dpi=96
plt.figure(figsize=(680/my_dpi,680/my_dpi),dpi=my_dpi)

patches, texts, autotexts = plt.pie(x=[1,2,3],#返回三个对象
                                    
        labels=['A','B','C'],
        colors=["#d5695d""#5d8ca8""#65a479"], 
        autopct='%.2f%%',
        explode=(0.1,0,0)
       )
texts[0].set_color('r')#修改A标签的颜色
texts[1].set_size('20')#修改B的大小

autotexts[2].set_color('b')#修改50.00%的颜色

#matplotlib.patches.Wedge
patches[0].set_alpha(0.3)#A组分设置透明度
patches[2].set_hatch('|')#C组分添加网格线
patches[1].set_hatch('x')

plt.legend(patches, ['A','B','C'],#添加图例
          title="Pie Learning",
          loc="center left",
          fontsize=15,
          bbox_to_anchor=(100.51))

plt.title('Your pie',size=20)
plt.show()
  • 添加图例

#这里简单介绍,后面单独开一篇写图例设置
from string import ascii_letters
my_dpi=96
plt.figure(figsize=(480/my_dpi,480/my_dpi),dpi=my_dpi)
patches, texts, autotexts = plt.pie(x=range(1,12),                                    
        labels=list(ascii_letters[26:])[0:11],
        colors=palettable.cartocolors.qualitative.Bold_9.mpl_colors, 
        autopct='%.2f%%',
       )
plt.legend(patches, list(ascii_letters[26:])[0:11],#添加图例
          title="Pie Learning",
          loc="center left",
          bbox_to_anchor=(100.51),
          ncol=2,#控制图例中按照两列显示,默认为一列显示,
          )

 
参考资料

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html?highlight=pie#matplotlib.pyplot.pie


更多好文,欢迎随缘关注@pythonic生物人



"点赞"、"在看"鼓励下呗

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存