使用Matplotlib在Python中创建环形图


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

算法

可以使用matplotlib库提供的方法绘制Matplotlib中的环形图。我们可以按照以下算法在Matplotlib中制作环形图。

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

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

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

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

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

  • 使用ax.pie()创建环形图,将大小作为数据传递,并将标签作为labels参数传递。

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

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

安装Matplotlib

Matplotlib是Python中的一个数据可视化库,允许你创建各种图表。要安装它,你可以在命令行或终端中键入以下命令。

Pip install matplotlib

创建虚拟数据

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

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

创建基本的环形图

我们将使用plt.pie()函数创建环形图。此函数将大小列表作为参数,并创建一个表示每个类别的环形图。

语法

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%。

示例

在下面的示例中,我们使用标签和大小列表来创建一个环形图,表示每个标签类别。我们首先使用plt.subplots()函数创建一个图形和轴对象。我们将轴的纵横比设置为“相等”,以确保图表是圆形的。然后,我们使用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()

输出

自定义环形图

我们可以通过更改图表中的表示颜色、字体更改、轴标签更改等来进一步自定义环形图。

示例

要更改图表的颜色,我们可以将颜色列表传递给ax.pie函数的wedge props参数。在下面的示例中,我们将之前的环形图颜色更改为红色、绿色、蓝色和橙色。

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

输出

结论

在本文中,我们讨论了如何使用matplotlib创建任何数据的环形图表示,以及环形图和饼图之间的基本区别。Matplotlib是一个数据可视化库,用于以各种图表的形式显示数据。环形图也可以根据特定的数据可视化需求进行自定义。

更新于:2023年7月10日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.