如何实现 Python 双Y轴图的图例

在数据可视化中,双Y轴图是一种常用的手段,可以同时展示两种不同类型的数据。在本篇文章中,我们将学习如何在 Python 中创建一个双Y轴图,并添加图例。以下是整体流程、步骤和详细代码实现。

流程概述

我们将通过以下步骤实现双Y轴图的图例:

步骤 说明
1. 导入库 导入所需的Python库
2. 准备数据 创建用于绘图的数据
3. 创建图形 创建双Y轴图表
4. 添加图例 为双Y轴图表添加图例
5. 显示图形 显示绘制好的图形

流程图

flowchart TD
    A[导入库] --> B[准备数据]
    B --> C[创建图形]
    C --> D[添加图例]
    D --> E[显示图形]

实现步骤

1. 导入库

首先,我们需要导入所需的库。本示例将使用 matplotlibnumpy

import matplotlib.pyplot as plt  # 导入matplotlib用于绘图
import numpy as np  # 导入numpy用于数据处理

2. 准备数据

接下来,我们需要准备一些数据。我们创建两个数据集,一个用于左Y轴,另一个用于右Y轴。

x = np.arange(0, 10, 0.1)  # 创建x轴数据,范围从0到10,步长为0.1
y1 = np.sin(x)  # 创建第一个数据集,y1为x的正弦值
y2 = np.exp(x / 3)  # 创建第二个数据集,y2为x的指数值

3. 创建图形

现在,我们可以创建双Y轴图表。使用 twinx() 方法在同一图表上添加第二个Y轴。

fig, ax1 = plt.subplots()  # 创建一个图形和一组坐标轴
ax2 = ax1.twinx()  # 创建第二个Y轴

ax1.plot(x, y1, 'g-', label='Sin(x)')  # 在左Y轴绘制y1数据,颜色为绿色
ax2.plot(x, y2, 'b-', label='Exp(x/3)')  # 在右Y轴绘制y2数据,颜色为蓝色

4. 添加图例

在添加图例时,我们需要为每个Y轴分别设置图例内容。

ax1.set_ylabel('Sin(x)', color='g')  # 设置左Y轴标签
ax2.set_ylabel('Exp(x/3)', color='b')  # 设置右Y轴标签

# 添加图例
lines1, labels1 = ax1.get_legend_handles_labels()  # 获取左Y轴的图例句柄和标签
lines2, labels2 = ax2.get_legend_handles_labels()  # 获取右Y轴的图例句柄和标签
ax1.legend(lines1 + lines2, labels1 + labels2)  # 合并并添加到图例

5. 显示图形

最后,调用 plt.show() 显示绘图结果。

plt.title('双Y轴图例示例')  # 设置图表标题
plt.show()  # 显示图形

完整代码示例

将上述步骤结合起来,我们得到了以下代码:

import matplotlib.pyplot as plt  # 导入matplotlib用于绘图
import numpy as np  # 导入numpy用于数据处理

# 准备数据
x = np.arange(0, 10, 0.1)  # 创建x轴数据
y1 = np.sin(x)  # 第一个数据集
y2 = np.exp(x / 3)  # 第二个数据集

# 创建图形
fig, ax1 = plt.subplots()  # 创建图形
ax2 = ax1.twinx()  # 添加第二个Y轴

# 绘制数据
ax1.plot(x, y1, 'g-', label='Sin(x)')  # 左Y轴
ax2.plot(x, y2, 'b-', label='Exp(x/3)')  # 右Y轴

# 添加图例
ax1.set_ylabel('Sin(x)', color='g')  # 左Y轴标签
ax2.set_ylabel('Exp(x/3)', color='b')  # 右Y轴标签
lines1, labels1 = ax1.get_legend_handles_labels()  # 获取左Y轴图例
lines2, labels2 = ax2.get_legend_handles_labels()  # 获取右Y轴图例
ax1.legend(lines1 + lines2, labels1 + labels2)  # 合并图例

# 显示图形
plt.title('双Y轴图例示例')  # 图表标题
plt.show()  # 显示图形

总结

在本篇文章中,我们了解了如何使用 Python 的 matplotlib 库创建一个双Y轴图,并且为其添加图例。希望这篇文章能够帮助你在数据可视化方面迈出更进一步的一步。数据可视化是传达信息的重要工具,掌握了这个技能,将会对你的开发生涯大有裨益。