如何在 Matplotlib 图形上手动添加带有颜色框的图例?

matplotlibpythonserver side programmingprogramming

Matplotlib 是 Python 中流行的数据可视化库,以其灵活性和高质量可视化而闻名。通过本教程,您将学习如何在 Matplotlib 图形上创建带有颜色框的图例,使您的可视化更具信息性和视觉吸引力。

在深入研究代码之前,了解图例的不同元素非常重要。图例是用不同颜色、标记或线条标记绘图中元素的关键。通过添加图例,我们可以理解所呈现的数据,并使观众更容易理解我们的可视化。在下一节中,我们将介绍在 Matplotlib 图形上创建带有颜色框的图例的语法。

语法

要在 Python 中手动在 Matplotlib 图形上添加带有颜色框的图例,我们可以使用以下语法 -

# 导入库
import matplotlib.patches as mpatches

# 创建带有颜色框的图例
color_patch = mpatches.Patch(color='red', label='legend')
plt.legend(handles=[color_patch])

在上述语法中,使用 mpatches.Patch 函数创建颜色框,并将颜色参数设置为"red"。使用 plt.legend 函数将生成的蓝色框添加到图例中,并将 handles 参数设置为 [color_patch]。虽然颜色框本身在图中不可见,但它在图例中显示为标签文本旁边的彩色矩形。可以使用 mpatches.Patch 函数中的其他参数调整颜色框的大小和形状,例如 linewidth、edgecolor 和 facecolor。下面的示例很好地解释了这一点。

示例

在此示例中,第一步是导入必要的库,即 matplotlib.patches 和 matplotlib.pyplot。然后,我们使用 plt.plot() 函数创建一个简单的线图,并传入 x 坐标和 y 坐标列表作为参数,以及线的颜色。

接下来,我们使用 plt.title() 函数设置图的标题。此代码的主要重点是创建带有颜色框的图例。我们通过使用 mpatches.Patch() 函数创建一个补丁来实现这一点,该函数接受几个参数,例如补丁的颜色、图例中显示的标签以及线宽和 alpha 等附加参数。然后,我们创建一个带有红色和"示例图例"标签的 color_box 补丁。我们还将 linewidth 设置为 12,将 alpha 设置为 0.5,以调整补丁的大小和透明度。

最后,我们使用 plt.legend() 函数将补丁添加到图例中,并传入 handles 参数,其中包含要包含在图例中的补丁列表。我们还将图例的位置设置为"右上角",并使用 framealpha 参数调整框架透明度,并将 frameon 设置为 True。

总体而言,通过调整 mpatches.Patch() 函数中的参数,您可以自定义颜色框的大小、形状和颜色,以满足您的可视化需求。最后使用 plt.show() 显示绘图。

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

# 创建绘图
plt.plot([1, 2, 3, 4], color='blue')
plt.title('Example 1')

# 创建带颜色框的图例
color_box = mpatches.Patch(color='red', label='Example Legend', linewidth=12, alpha=0.5)
plt.legend(handles=[color_box], loc='upper right', framealpha=0.5, frameon=True)

# 显示绘图
plt.show()

输出

示例

示例导入了所需的库,包括 Plotly Express,用于使用px.data.tips()函数导入 tips 数据集,以及 Matplotlib 的 pyplot 和 patches 来构建图和图例。

散点图是使用 matplotlib 中的 ax.scatter() 函数创建的。x 轴表示账单总金额,y 轴表示小费金额。'c' 参数用于根据 tips 数据集的 'sex' 列指定标记的颜色。.map() 函数用于将字符串值"Female"和"Male"映射到相应的颜色值"red"和"blue"。

为了创建示例中的图例,mpatches.Patch() 函数用于手动创建带有特定颜色和标签的"Female"和"Male"的颜色框。然后使用 plt.legend() 函数将这些补丁连同补丁的句柄和图上的位置一起添加到图中。图例周围的透明度和框架的存在也使用 framealpha frameon 参数进行调整。

最后,使用 plt.title()、plt.xlabel() 和 plt.ylabel() 为图赋予标题和轴标签。然后使用 plt.show() 显示该图。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import plotly.express as px

# 从 plotly.express 加载 tips 数据集
tips = px.data.tips()
# 创建散点图
fig, ax = plt.subplots()
ax.scatter(tips['total_bill'], tips['tip'], c=tips['sex'].map({'Female': 'red', 'Male': 'blue'}))

# 创建带有颜色框的图例
female_patch = mpatches.Patch(color='red', label='Female')
male_patch = mpatches.Patch(color='blue', label='Male')
plt.legend(handles=[female_patch, male_patch], loc='upper left', framealpha=0.5, frameon=True)

# 设置图标题和轴标签
plt.title('Total Bill vs Tip by Gender')
plt.xlabel('Total Bill')
plt.ylabel('Tip')

# 显示图
plt.show()

输出

结论

总之,在 Matplotlib 图中添加带有颜色框的图例是一种有用的方法,可以直观地表示数据并提高图的整体可读性。我们可以使用 mpatches.Patch 函数修改颜色框以满足我们的需求。这包括更改框的大小、形状和颜色。可以使用 plt.legend 函数将颜色框图例添加到图形中并自定义位置和外观。学习

可以使您从处理简单或复杂的数据中受益匪浅

相关文章