Matplotlib 饼图
创建饼图
使用 Pyplot,您可以使用 pie()
函数来绘制饼图:
实例
一个简单的饼图:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) plt.pie(y) plt.show()
结果:

如您所见,饼图为数组中的每个值(在本例中为 [35, 25, 25, 15])绘制一个部分(称为楔形)。
默认情况下,第一个楔形的绘制从 x 轴开始并逆时针移动:

注意:每个楔形的大小是通过使用以下公式将值与其他所有值进行比较来确定的:
该值除以所有值的总和:x/sum(x)
标签
使用 labels
参数向饼图添加标签。
labels
参数必须是一个数组,每个楔形有一个标签:
实例
一个简单的饼图:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] plt.pie(y, labels = mylabels) plt.show()
结果:

起始角度
如前所述,默认的起始角度在 x 轴上,但您可以通过指定 startangle
参数来更改起始角度。
startangle
参数以度数为单位定义,默认角度为 0:

实例
从 90 度开始第一个楔形:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] plt.pie(y, labels = mylabels, startangle = 90) plt.show()
结果:

分离
也许您想让其中一个楔形脱颖而出?explode
参数允许您这样做。
如果指定了 explode
参数,并且不为 None
,则它必须是一个数组,每个楔形一个值。
每个值表示每个楔形离中心的距离:
实例
将 "Apples" 楔形从饼图中心拉出 0.2:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] myexplode = [0.2, 0, 0, 0] plt.pie(y, labels = mylabels, explode = myexplode) plt.show()
结果:

阴影
通过将 shadows
参数设置为 True
,向饼图添加阴影:
实例
添加阴影:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] myexplode = [0.2, 0, 0, 0] plt.pie(y, labels = mylabels, explode = myexplode, shadow = True) plt.show()
结果:

颜色
您可以使用 colors
参数设置每个楔形的颜色。
如果指定了 colors
参数,它必须是一个数组,每个楔形一个值:
实例
为每个楔形指定一种新颜色:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] mycolors = ["black", "hotpink", "b", "#4CAF50"] plt.pie(y, labels = mylabels, colors = mycolors) plt.show()
结果:

您可以使用十六进制颜色值、140 种受支持的颜色名称中的任何一种,或使用以下快捷方式:
'r'
- 红色'g'
- 绿色'b'
- 蓝色'c'
- 青色'm'
- 品红色'y'
- 黄色'k'
- 黑色'w'
- 白色
图例
要为每个楔形添加解释列表,请使用 legend()
函数:
实例
添加图例:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] plt.pie(y, labels = mylabels) plt.legend() plt.show()
结果:

带标题的图例
要向图例中添加标题,请将 title
参数添加到 legend
函数中。
实例
添加带标题的图例:
import matplotlib.pyplot as plt import numpy as np y = np.array([35, 25, 25, 15]) mylabels = ["Apples", "Bananas", "Cherries", "Dates"] plt.pie(y, labels = mylabels) plt.legend(title = "Four Fruits:") plt.show()
结果:
