如何在 Matplotlib 图形上手动添加带颜色框的图例?
Matplotlib 是 Python 中一个流行的数据可视化库,以其灵活性和高质量的可视化效果而闻名。通过本教程,您将学习如何在 Matplotlib 图形上创建带颜色框的图例,使您的可视化效果更具信息性和视觉吸引力。
在深入研究代码之前,了解图例的不同元素非常重要。图例是用于标记我们绘图中不同颜色、标记或线条的元素的键。通过添加图例,我们可以理解正在呈现的数据,并使观众更容易解读我们的可视化效果。在下一节中,我们将了解在 Matplotlib 图形上创建带颜色框的图例的语法。
语法
要在 Python 中的 Matplotlib 图形上手动添加带颜色框的图例,我们可以使用以下语法:
# Import libraries import matplotlib.patches as mpatches # Creating legend with color box color_patch = mpatches.Patch(color='red', label='legend') plt.legend(handles=[color_patch])
在上述语法中,颜色框是通过使用 **mpatches.Patch** 函数并将其 color 参数设置为 'red' 来创建的。生成的蓝色颜色框通过使用 **plt.legend** 函数并将 handles 参数设置为 **[color_patch]** 添加到图例中。虽然颜色框本身在绘图中不可见,但它在图例中显示为彩色矩形,位于标签文本旁边。可以使用 **mpatches.Patch** 函数中的其他参数(例如 **linewidth、edgecolor 和 facecolor**)调整颜色框的大小和形状。以下示例对此进行了很好的解释。
示例
在此示例中,第一步是导入必要的库,即 **matplotlib.patches 和 matplotlib.pyplot**。然后,我们使用 **plt.plot()** 函数创建一个简单的线形图,并将 x 坐标和 y 坐标列表作为参数传递,以及线的颜色。
接下来,我们使用 **plt.title()** 函数设置绘图的标题。此代码的主要重点是创建带颜色框的图例。我们通过使用 **mpatches.Patch()** 函数创建一个补丁来实现这一点,该函数接收多个参数,例如补丁的颜色、要在图例中显示的标签以及其他参数,如 linewidth 和 alpha。然后,我们创建一个颜色为红色的 color_box 补丁,并将其标签设置为“示例图例”。我们还将 **linewidth** 设置为 12,并将 alpha 设置为 0.5 以调整补丁的大小和透明度。
最后,我们使用 **plt.legend()** 函数将补丁添加到图例中,并将 handles 参数与要包含在图例中的补丁列表一起传递。我们还将图例的位置设置为“右上角”,并使用 **framealpha** 参数和 **frameon** 参数调整框架的透明度。
总的来说,通过调整 **mpatches.Patch()** 函数中的参数,您可以自定义颜色框的大小、形状和颜色以满足您的可视化需求。最后使用 **plt.show()** 显示绘图。
import matplotlib.patches as mpatches import matplotlib.pyplot as plt # Creating plot plt.plot([1, 2, 3, 4], color='blue') plt.title('Example 1') # Creating legend with color box 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) # Show plot 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”颜色框。然后,这些补丁与补丁的 handles 和绘图上的位置一起使用 **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 # Load tips dataset from plotly.express tips = px.data.tips() # Create scatter plot fig, ax = plt.subplots() ax.scatter(tips['total_bill'], tips['tip'], c=tips['sex'].map({'Female': 'red', 'Male': 'blue'})) # Create a legend with a color box 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) # Set plot title and axis labels plt.title('Total Bill vs Tip by Gender') plt.xlabel('Total Bill') plt.ylabel('Tip') # Show plot plt.show()
输出
结论
总之,在 Matplotlib 图形上添加带颜色框的图例可以成为直观地表示数据并提高图形整体可读性的有用方法。我们可以使用 mpatches.Patch 函数修改颜色框以满足我们的需求。这包括更改框的大小、形状和颜色。可以使用 plt.legend 函数将颜色框图例添加到图形中,并自定义其位置和外观。学习可以使处理简单或复杂的数据受益。