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()
输出
自定义甜甜圈图
我们可以通过改变图表中的颜色、字体变化、轴标签变化等来进一步自定义甜甜圈图。
示例
要改变图表的颜色,我们可以将颜色列表传递给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()
输出
结论
在本文中,我们讨论了如何使用matplotlib创建任意数据的甜甜圈图表表示,并且介绍了甜甜圈图和饼图之间的基本区别。Matplotlib是一个用于以各种图表形式展示数据的数据可视化库。根据特定的数据可视化需求,甜甜圈图还可以进行自定义调整。