使用 Python 中的 Matplotlib 绘制环形图
环形图是一种圆形图,以圆形方式显示数据的相对表示。环形图和饼图看起来相似,但环形图在图表中心有一个洞,而饼图没有。可以使用 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。
# 数据 import matplotlib.pyplot as plt labels = ['Apples', 'Bananas', 'Grapes', 'Oranges'] sizes = [25, 30, 15, 30] # 绘图 fig, ax = plt.subplots(figsize=(10, 6), subplot_kw=dict(aspect="equal")) wedges, texts = ax.pie(sizes, wedgeprops=dict(width=0.5), startangle=-40) # 内圆 centre_circle = plt.Circle((0,0),0.70,fc='white') fig = plt.gcf() fig.gca().add_artist(centre_circle) # 添加标签 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 # 数据 labels = ['Apples', 'Bananas', 'Grapes', 'Oranges'] sizes = [25, 30, 15, 30] colors = ['red', 'green', 'blue', 'orange'] # 绘图 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) # 内圆 centre_circle = plt.Circle((0,0),0.70,fc='white') fig = plt.gcf() fig.gca().add_artist(centre_circle) # 添加标签 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 是一个数据可视化库,用于以各种图表的形式显示数据。还可以根据特定的数据可视化需求定制环形图。