大家好,从今天起,我们将开始更新Matplotlib饼图图鉴。
本文为基础散点图第一篇,将讲解以下三个简单的饼图绘制方法
饼图绘制说明
因本文是Matplotlib饼图的开篇,因此先简单讲一下柱状图的绘图原理,在Matplotlib中,饼图可以使用plt.pie
制作饼图。绘图基本套路请见Matplotlib绘图原理讲解。
有关plt.pie其他参数说明如下:
“matplotlib.pyplot.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=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, data=None)
”
- x: array, 代表了每部分的值。每个标签占多大,会自动去算百分比。
- explode: list, 将某一块分割出来;例如[0,0,0.5,0] 将第四块分割出来且数值越大分割出来越大
- label: list, 每一部分标签
- colors: array-like, 使用颜色。详见色卡rgb
- autopct: 百分比精确到小数点末尾
- pctdistance: 数值距圆心半径倍数距离
- shadow: 饼图阴影的大小
- labeldistance: 标签的距离
- startangle: 第一块楔形开始的角度
- radius: 饼图的半径
- counterlock: 画图方向
- wedgeprops: 传递给楔形对象的楔形对象的参数字典。
- textprops: 传递给文本对象的参数字典。
- center: 图表的中心位置
- frame: True则图表绘制轴框架
- rotatelabels: True则每个标签旋转到相应切片的角度
Returns:
- patches : list, patches饼图的返回值
- texts : list, 饼图外label的文本
- autotexts : list, 饼图内部的文本返回值
下面我们将稍微添加/修改部分参数,制作其他样式的基本饼图
基础饼图-001
下面我们就来讲解如何绘制基础饼图,注意,代码在以下环境全部通过测试:
- Python == 3.7.1
- matplotlib == 3.0.2
- pandas == 0.23.4
- numpy == 1.15.4
因版本不同,可能会有部分语法差异,如有报错,请先检查拼写及版本是否一致!
首先导入相关库
import matplotlib
print(matplotlib.__version__) #查看Matplotlib版本
import pandas as pd
print(pd.__version__) #查看pandas版本
import numpy as np
print(np.__version__) #查看numpy版本
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文
首先是不带任何修饰的饼图,代码如下
plt.figure(figsize=(9,8),dpi = 100)
sizes = [150,250,300,60]
patches,text= plt.pie(sizes)
plt.title("基础饼图",fontsize = 20)
plt.show()
基础饼图-002
现在介绍如何修改颜色和增加标签、数值
plt.figure(figsize=(8,9),dpi = 100)
labels = ['A','B','C','D']
sizes = [150,250,300,60]
colors = ['#B0C4DE','#ADD8E6','#87CEFA','#4682B4'] #每块颜色定义
patches,l_text,p_text = plt.pie(sizes,
labels=labels,
colors=colors,
autopct = '%3.2f%%', #数值保留固定小数位
startangle = 90, #逆时针起始角度设置
pctdistance = 0.5
) #数值距圆心半径倍数距离
# 修改标签内数值和字体的大小
for t in l_text:
t.set_size(30)
for t in p_text:
t.set_size(17)
plt.title("基础饼图 - 修改颜色和增加标签、数值",fontsize = 25)
plt.axis('equal')
plt.show()
基础饼图003
现在进一步修改增加阴影、分割块并添加图例
plt.figure(figsize=(8,9),dpi = 100)
labels = ['A','B','C','D']
sizes = [150,250,300,60]
colors = ['#FE4365','#FC9D9A','#F9CDAD','#C8C8A9']
explode = (0,0,0.1,0) #分割出来第三部分
patches,l_text,p_text = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
autopct = '%3.2f%%',
shadow = True, #设置阴影设置
startangle = 90,
pctdistance = 0.5
)
plt.legend(patches, labels,
loc="center left",
bbox_to_anchor=(1, 0.2, 1, 1),
fontsize=20)
for t in l_text:
t.set_size(30)
for t in p_text:
t.set_size(17)
plt.title("基础饼图 - 修改增加阴影、分割块和图例",fontsize = 25)
plt.axis('equal')
plt.show()
以上就是本期三副图鉴的全部内容,更多精美图表欢迎关注后续更新。
“以上代码均已通过测试,如有报错,请先检查拼写与版本,若在某个版本中需要修改,欢迎在留言区指出,我会添加至对应使用说明中。谢谢!
”