接下来我会详细讲解“Python matplotlib 绘制双Y轴曲线图的示例代码”的完整攻略。
1. 准备环境
在讲解Python matplotlib绘制双Y轴曲线图示例之前,我们需要先安装matplotlib这个库。如果你的电脑还没有安装这个库,请使用pip安装:
pip install matplotlib
2. 创建基础图形与两个子图
通过调用matplotlib库中的subplots
函数可以很方便地创建基础图形与两个子图。这样我们就可以将两条线分别画在两个子图中,最终得到一张双Y轴曲线图。
import matplotlib.pyplot as plt
# 创建基础图形
fig, ax1 = plt.subplots()
# 创建子图
ax2 = ax1.twinx()
在上面的代码中,我们调用subplots
函数创建了一个基础图形fig
和一个子图ax1
。接着,我们使用子图的twinx
方法创建了另一个子图ax2
,这个twinx
方法是用来让ax2
与ax1
共享x轴的。
3. 绘制线条
接下来我们可以绘制两条曲线了。
# 绘制线条1
ax1.plot(x, y1, 'g-', label='y1')
# 绘制线条2
ax2.plot(x, y2, 'b-', label='y2')
在上面的代码中,第一段代码用于在ax1
子图中绘制y1
线条,x
和y1
是数据点的横纵坐标。'g-'
表示曲线的颜色和线型,其中g
代表绿色,-
代表实线。其中,label
参数简单的给线条一个名字,以便后面做图例说明。第二段代码则是在ax2
子图中绘制y2
线条,与绘制y1
线条的方式类似。
4. 完善图例、标题和轴标签
最后,我们还需要添加一些图例、标题和轴标签等内容,以便让图表的信息更加清晰和直观。
# 添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 添加标题
plt.title('Double Y-axis Plot')
# 添加轴标签
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data')
ax2.set_ylabel('Y2 data')
在上面的代码中,legend
函数用于添加标记曲线的说明文字,loc
参数指定说明文字显示的位置。set_xlabel
、set_ylabel
函数则是用于添加x轴和y轴标签。
5. 完整示例代码
下面是一个完整的示例代码,用于展示如何用Python matplotlib绘制双Y轴曲线图:
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
x = np.linspace(0, 10, 1000)
y1 = np.sin(x)
y2 = np.exp(x)
# 创建基础图形
fig, ax1 = plt.subplots()
# 创建子图
ax2 = ax1.twinx()
# 绘制线条1
ax1.plot(x, y1, 'g-', label='y1')
# 绘制线条2
ax2.plot(x, y2, 'b-', label='y2')
# 添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 添加标题
plt.title('Double Y-axis Plot')
# 添加轴标签
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data')
ax2.set_ylabel('Y2 data')
# 显示图像
plt.show()
在这个示例中,我们生成了两个示例数据,一个是sin函数的数据,一个是指数函数的数据。接着,我们创建了基础图形和两个子图,再通过调用twinx
方法让两个子图共享x轴。接着,我们分别将两个数据集绘制出来,并在绘制的时候指定了样式和颜色。最后,我们添加了图例、标题和轴标签等整体布局,再使用show
方法将图像显示出来。
6. 示例说明
这里再举两个例子来说明如何绘制双Y轴曲线图。
示例一:LSTM误差曲线
在机器学习应用中,经常需要绘制模型训练的过程中的误差曲线,以便于判断模型是否收敛。这里使用LSTM模型的误差曲线作为示例。我们可以将训练误差和测试误差分别放在两个y轴上,以便于同时显示两条曲线。
import numpy as np
import matplotlib.pyplot as plt
# LSTM模型训练误差
train_losses = [0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0.18, 0.16, 0.15, 0.14]
# LSTM模型测试误差
test_losses = [0.65, 0.6, 0.55, 0.53, 0.51, 0.5, 0.45, 0.44, 0.43, 0.42]
# x轴数据
x = np.arange(0, 10, 1)
# 创建双y轴图表
fig, ax1 = plt.subplots()
# 右侧y轴
ax2 = ax1.twinx()
# 绘制训练误差折线图
ax1.plot(x, train_losses, 'r', label='training loss')
# 绘制测试误差折线图
ax2.plot(x, test_losses, 'b', label='test loss')
# x轴标注
plt.xticks(x, x)
# y轴标注
ax1.set_ylabel('train loss')
ax2.set_ylabel('test loss')
# 标题
plt.title('LSTM Loss')
# 图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 显示结果
plt.show()
示例二:股票涨跌幅分析
在金融分析领域,经常需要绘制股票的涨跌幅分析图。涨跌幅的数据都是百分比形式,因此使用双y轴图表可以很好地呈现数据变化趋势。
import numpy as np
import matplotlib.pyplot as plt
# 暴风股票涨跌幅数据
bf_data = [0.2, -1.4, 2.3, -2.8, 1.7, 0.3, 1.5, -0.8, -1.2, 0.8, 1.2, -1.3, 0.7, -0.5, -0.3]
# 兴业银行股票涨跌幅数据
xy_data = [0.5, 1.2, -1.1, 1.8, 0.7, -0.4, -1.7, 0.2, 1.5, 0.9, -1.3, -0.8, 0.3, 0.7, -0.5]
# x轴数据
x = list(range(1, len(bf_data) + 1))
# 创建双y轴图表
fig, ax1 = plt.subplots()
# 右侧y轴
ax2 = ax1.twinx()
# 绘制暴风股票折线图
ax1.plot(x, bf_data, 'r', label='BaoFeng stock')
# 绘制兴业银行股票折线图
ax2.plot(x, xy_data, 'b', label='XingYe Bank stock')
# x轴标注
plt.xticks(x, x)
# y轴标注
ax1.set_ylabel('BaoFeng')
ax2.set_ylabel('XingYe')
# 网格线
plt.grid(True)
# 标题
plt.title('Stock Fluctuations')
# 图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 显示结果
plt.show()
在上面的示例中,我们创建了两组涨跌幅数据,一个是暴风股票的数据,一个是兴业银行股票的数据。接着我们使用了双y轴图表将这两组数据进行了呈现,左侧y轴显示了暴风股票的涨跌幅数据,右侧y轴则显示了兴业银行股票的涨跌幅数据。其中,xlabel
函数用于设置x轴标签,ylabel
函数用于设置y轴标签,grid
函数用于设置网格线。最后,我们再添加了标题和图例等信息,将图表呈现出来。
希望我的回答能够帮助你理解如何用Python matplotlib绘制双Y轴曲线图。如果还有其他问题,请随时提出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python matplotlib 绘制双Y轴曲线图的示例代码 - Python技术站