如何在 Python 中绘制和自定义饼图?

饼图是一种圆形统计图形,它被分成多个切片以说明数字比例。在饼图中,每个切片的弧长与其代表的数量成正比。

饼图是表示民意调查结果的一种流行方式。在本教程中,我们将学习如何绘制饼图。此外,我们将学习如何在 python 中自定义饼图。

让我们开始吧。

创建样本数据

让我们创建一些在绘制饼图时可以使用的示例数据。

labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]

该数据代表了对人们最喜欢的运动的民意调查。

如何绘制饼图?

为了绘制饼图,我们将使用matplotlib

import matplotlib.pyplot as plt

要绘制基本饼图,我们需要标签以及与这些标签关联的值。

labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
fig1, ax1 = plt.subplots()
ax1.pie(sizes, labels=labels)
ax1.axis('equal'
plt.show()

运行上面的代码片段,我们得到以下输出:

饼形图

请注意,这是一个非常基本的饼图。

现在让我们看看如何自定义饼图并使其看起来更有趣。

在 Python 中自定义饼图

Matplotlib 在绘制饼图时提供了许多自定义选项。让我们一一看看这些。

1.制作一个弹出切片

您可以使用爆炸选项制作饼图弹出窗口的一个或多个切片。

为此,我们声明一个具有爆炸值的数组。爆炸数组指定偏移每个切片的半径的分数。

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
explode = (0, 0.1, 0, 0)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels)
plt.show()

输出 :

爆炸

让我们尝试一些不同的爆炸值。

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
explode = (0.4, 0.2, 0.2, 0.2)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels)
plt.show()
爆炸

2.旋转饼图

您可以通过设置strartangle来旋转饼图

它将饼图的起点从 x 轴逆时针旋转指定的角度值。

让我们看看它的实际效果:

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
fig1, ax1 = plt.subplots()
explode = (0, 0.1, 0, 0)
ax1.pie(sizes, explode=explode, labels=labels,
        shadow=True, startangle=90)
 
plt.show()

输出 :

旋转 90
import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
fig1, ax1 = plt.subplots()
explode = (0, 0.1, 0, 0)
ax1.pie(sizes, explode=explode, labels=labels,
        shadow=True, startangle=45)
 
plt.show()
旋转45

3. 显示百分比

您还可以使用以下代码行显示每个切片的百分比:

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
fig1, ax1 = plt.subplots()
explode = (0, 0.1, 0, 0)
ax1.pie(sizes, explode=explode, labels=labels,autopct='%1.1f%%',
        shadow=True, startangle=90)
 
plt.show()

输出 :

百分比

4. 自定义颜色

Matplotlib 为您提供发挥创意的选项,让您的饼图看起来尽可能充满活力。

要更改饼图的颜色,请使用以下代码行。

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
colors = ( "orange", "cyan", "brown",
          "grey")
fig1, ax1 = plt.subplots()
explode = (0, 0.1, 0, 0)
ax1.pie(sizes, colors = colors, explode=explode, labels=labels,autopct='%1.1f%%',
        shadow=True, startangle=90)
 
plt.show()

这里我们声明了要在列表中使用的 4 种颜色。然后我们在绘制饼图时将该列表作为参数传递。

输出如下:

改变颜色

5. 显示颜色代码

除了饼图之外,您还可以显示一个包含饼图配色方案的框。当饼图中有很多切片时,这尤其有用。

要显示颜色代码,请使用以下代码片段:

import matplotlib.pyplot as plt
 
labels = 'Cricket', 'Football', 'Hockey', 'F1'
sizes = [15, 30, 45, 10]
 
colors = ( "orange", "cyan", "brown",
          "grey")
fig1, ax1 = plt.subplots()
explode = (0, 0.1, 0, 0)
 
ax1.pie(sizes, colors = colors, explode=explode, labels=labels,autopct='%1.1f%%', shadow=True, startangle=90)
patches, texts, auto = ax1.pie(sizes, colors=colors, shadow=True, startangle=90,explode=explode, autopct='%1.1f%%' )
 
plt.legend(patches, labels, loc="best")
plt.show()

输出 :

颜色代码

结论

本教程介绍如何使用 Matplotlib 在 Python 中绘制和自定义饼图。希望您和我们一起学习愉快。要查看 matplotlib 的官方文档,请使用此链接