Python 使用Matplotlib制作甜甜圈图

Python 使用Matplotlib制作甜甜圈图

甜甜圈图是一种用圆形显示数据相对表示的图表。甜甜圈图和饼图看起来相似,但甜甜圈图的中心有一个空洞,而饼图没有。可以使用Matplotlib来创建包含不同比例的各种组的数据集的甜甜圈图。在本文中,我们将使用Matplotlib创建一个甜甜圈图。

步骤

在Matplotlib中,可以使用提供的方法绘制甜甜圈图。我们可以按照以下算法在Matplotlib中制作甜甜圈图。

  • 导入必要的库,包括Matplotlib。

  • 定义要绘制的数据,包括标签和大小。

  • 使用 plt.subplots() 创建一个图形和一个轴对象。

  • 使用 plt.subplots() 的subplot_kw参数将绘图的纵横比设置为相等。

  • 使用 ax.pie() 的startangle参数设置绘图的起始角度。

  • 使用 ax.pie() 创建甜甜圈图,将大小作为数据传递给它,将标签作为标签参数传递给它。

  • 通过使用 plt.Circle() 添加一个内部圆环、使用 ax.legend() 添加一个图例、使用 plt.setp() 更改字体大小和粗细、使用 ax.set_title() 设置图表标题来自定义图表。

  • 使用 plt.show() 显示图表。

安装Matplotlib

Matplotlib是Python中的数据可视化库,可以创建各种图表。要安装Matplotlib,您可以在命令行或终端上输入以下命令。

Pip install matplotlib

创建虚拟数据

为了创建甜甜圈图表,我们需要虚拟数据,可以使用Python中的matplotlib进行可视化。我们创建一个标签列表和一个大小列表,其中包含每个标签类别的相对大小。

labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]

创建基本甜甜圈图

我们将使用 plt.pie() 函数来创建甜甜圈图。该函数以sizes列表作为参数,创建一个代表各个类别的甜甜圈图。

语法

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, normalize=None, *, data=None)

传递给plt.pie()函数的参数具有特定的意义,如下所示:

  • x - 要绘制的数据,以数值序列的形式。

  • explode - 一个指定每个楔形图半径偏移的分数序列。

  • labels - 用于每个楔形图的标签字符串序列。

  • colors - 用于每个楔形图的颜色序列。

  • autopct - 用于格式化百分比文本标签的格式字符串。如果为None,则不显示标签。

  • pctdistance - 从饼图中心绘制百分比标签的距离。

  • shadow - 一个布尔值,指示是否在饼图下方绘制阴影。

  • startangle - 以度为单位指定开始绘制第一个楔形图的角度。

  • radius - 饼图的半径。如果为None,则半径设置为1。

  • counterclock - 一个布尔值,指示是逆时针还是顺时针绘制楔形图。

  • wedgeprops - 传递给用于创建每个楔形图的Wedge类的关键字参数的字典。

  • textprops - 传递给用于创建文本标签的Text类的关键字参数的字典。

  • center - 饼图的中心点,以(x, y)坐标的元组形式。

  • frame - 一个布尔值,指示是否在饼图周围绘制边框。

  • rotatelabels - 一个布尔值,指示是否旋转文本标签。

  • normalize - 一个布尔值,指示是否在绘图之前将数据归一化为100%。

示例

在下面的示例中,我们使用labels和sizes列表创建一个甜甜圈图表,表示每个标签类别。首先使用plt.subplots()函数创建一个图形和轴对象。我们将轴的纵横比设置为”equal”,以确保图表是圆形的。然后使用ax.pie()函数创建一个饼图,楔形图的宽度为0.5,起始角度为-40。

# Data
import matplotlib.pyplot as plt
labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]

# Plot
fig, ax = plt.subplots(figsize=(10, 6), subplot_kw=dict(aspect="equal"))

wedges, texts = ax.pie(sizes, wedgeprops=dict(width=0.5), startangle=-40)

# Inner circle
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)

# Add labels
ax.legend(wedges, labels,
      title="Fruits",
      loc="center left",
      bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(texts, size=12, weight="bold")

ax.set_title("Fruit Distribution")

plt.show()

输出

Python 使用Matplotlib制作甜甜圈图

自定义甜甜圈图

我们可以通过改变图表中的颜色、字体变化、轴标签变化等来进一步自定义甜甜圈图。

示例

要改变图表的颜色,我们可以将颜色列表传递给ax.pie函数的楔状参数。在下面的示例中,我们将把我们之前的甜甜圈图的颜色改为红色、绿色、蓝色和橙色。

import matplotlib.pyplot as plt
# Data
labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]
colors = ['red', 'green', 'blue', 'orange']

# Plot
fig, ax = plt.subplots(figsize=(10, 6), subplot_kw=dict(aspect="equal"))

wedges, texts = ax.pie(sizes, wedgeprops=dict(width=0.5, edgecolor='w'), startangle=-40, colors=colors)

# Inner circle
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)

# Add labels
ax.legend(wedges, labels,
      title="Fruits",
      loc="center left",
      bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(texts, size=12, weight="bold")

ax.set_title("Fruit Distribution")

plt.show()

输出

Python 使用Matplotlib制作甜甜圈图

结论

在本文中,我们讨论了如何使用matplotlib创建任意数据的甜甜圈图表表示,并且介绍了甜甜圈图和饼图之间的基本区别。Matplotlib是一个用于以各种图表形式展示数据的数据可视化库。根据特定的数据可视化需求,甜甜圈图还可以进行自定义调整。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程