Matplotlib 饼图

创建饼图

使用 Pyplot,您可以使用 pie() 函数来绘制饼图:

实例

一个简单的饼图:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show() 

亲自试一试

结果:

Matplotlib 饼图

如您所见,饼图为数组中的每个值(在本例中为 [35, 25, 25, 15])绘制一个部分(称为楔形)。

默认情况下,第一个楔形的绘制从 x 轴开始并逆时针移动:

Matplotlib 饼图

注意:每个楔形的大小是通过使用以下公式将值与其他所有值进行比较来确定的:

该值除以所有值的总和: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() 

亲自试一试

结果:

Matplotlib 饼图

起始角度

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

startangle 参数以度数为单位定义,默认角度为 0:

Matplotlib 饼图

实例

从 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() 

亲自试一试

结果:

Matplotlib 饼图

分离

也许您想让其中一个楔形脱颖而出?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() 

亲自试一试

结果:

Matplotlib 饼图

阴影

通过将 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() 

亲自试一试

结果:

Matplotlib 饼图

颜色

您可以使用 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() 

亲自试一试

结果:

Matplotlib 饼图

您可以使用十六进制颜色值、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() 

亲自试一试

结果:

Matplotlib 饼图

带标题的图例

要向图例中添加标题,请将 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() 

亲自试一试

结果:

Matplotlib 饼图