Python 多图添加图例的详解

在数据科学和可视化领域,图表不仅需要展示数据,还需要通过图例更好地帮助读者理解数据的意义。本文将介绍如何在Python中使用Matplotlib库为多张图添加图例。我们将涵盖状态图和饼状图的示例,最后将提供完整的代码示例和图表展示。

Matplotlib 简介

Matplotlib是Python中最为常用的数据可视化库之一,其灵活性和强大的功能使得它在数据分析和科学研究中得到了广泛应用。无论是简单的折线图,还是复杂的多图组合,Matplotlib都能为用户提供良好的支持。

状态图

以下是一个使用Mermaid语法表示的状态图。用户可以根据图的状态来理解不同情形下的操作和结果。

stateDiagram
    [*] --> 准备数据
    准备数据 --> 绘制图形
    绘制图形 --> 添加图例
    添加图例 --> [*]

在这个状态图中,我们可以看到将数据准备好后,我们可以绘制图形,并且在图形上添加图例,从而使最终的输出更加专业和可理解。

饼状图

饼状图是用于展示各项占总体比例的一种非常有效的图形。以下是一个使用Mermaid语法表示的饼状图。

pie
    title 饼状图示例
    "A": 20
    "B": 30
    "C": 25
    "D": 25

在这个饼状图中,四个部分的比例直观展示了各部分在整个数据集中的占比情况。接下来,我们将使用Python绘制饼状图的示例。

示例代码

在下面的示例中,我们将通过Matplotlib绘制多个图,并为每个图添加图例。

import matplotlib.pyplot as plt

# 准备数据
data1 = [20, 30, 25, 25]
data2 = [15, 25, 35, 25]
labels = ['A', 'B', 'C', 'D']

# 创建一个新的图形
fig, axs = plt.subplots(2, 2, figsize=(10, 10))

# 绘制第一个饼状图
axs[0, 0].pie(data1, labels=labels, autopct='%1.1f%%', startangle=90)
axs[0, 0].axis('equal')  # 让饼图为圆形
axs[0, 0].set_title('数据集1')

# 绘制第二个饼状图
axs[0, 1].pie(data2, labels=labels, autopct='%1.1f%%', startangle=90)
axs[0, 1].axis('equal')  
axs[0, 1].set_title('数据集2')

# 为每个图添加图例
axs[0, 0].legend(labels, title="类别", loc="upper right")
axs[0, 1].legend(labels, title="类别", loc="upper right")

# 绘制折线图作为示例
x = [1, 2, 3, 4]
y1 = [10, 20, 15, 30]
y2 = [5, 15, 20, 25]

axs[1, 0].plot(x, y1, label='数据集1')
axs[1, 0].plot(x, y2, label='数据集2')
axs[1, 0].set_title('折线图示例')
axs[1, 0].legend()

# 隐藏最后一个子图
axs[1, 1].axis('off')

plt.tight_layout()
plt.show()

代码说明

  1. 数据准备:我们定义了两个数据集和对应的标签,这将在之后的饼状图中使用。
  2. 创建子图:使用plt.subplots创建2x2的子图。
  3. 绘制饼状图:通过axs[0, 0].pieaxs[0, 1].pie方法绘制两个饼状图,并设置标题。
  4. 添加图例:通过axs[0, 0].legendaxs[0, 1].legend为每个饼状图添加图例。
  5. 绘制折线图:第三个子图绘制了两个数据集的折线图,并为其添加了图例。
  6. 显示图形:最后通过plt.show()方法展示图形。

结论

通过本文,我们学习了如何利用Matplotlib库在Python中绘制多张图并为其添加图例。图例可以极大提高图表的可读性,使得数据的呈现更加专业。无论是在研究论文、数据报告,还是个人项目中,一个清晰的图表都能帮助读者更好地理解数据。如果您对此感兴趣,可以自行调整数据与图形类型,进一步探索Matplotlib的强大功能。