📅  最后修改于: 2023-12-03 15:04:32.826000             🧑  作者: Mango
在Matplotlib库中,plt.subplots()函数是在一个figure对象中创建多个子图的便捷方法。通常情况下,每个子图使用不同的y轴标度,这需要使用多轴绘图来实现。
有时需要在同一图表中同时显示两个不同的y轴标度,例如,您可能需要同时显示不同的数据、不同的度量等。在这种情况下,可以使用Matplotlib.pyplot.twinx()
函数来创建一个新的y轴,并将其添加到已有的图表中。
以下是使用Matplotlib.pyplot.twinx()
函数创建子图的基本语法:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
上述代码将创建具有共同x轴和两个y轴的子图。ax1和ax2对象都是Axes对象,可用于进行其他自定义。
以下是一个简单的示例,说明如何使用twinx()函数来在同一图表中绘制两个不同的曲线。
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
x = np.linspace(0,10,100)
y1 = x
y2 = x**2
# 创建figure对象和子图
fig, ax1 = plt.subplots()
# 使用ax1对象绘制第一个曲线
ax1.plot(x,y1,color='r')
#设置y轴标签
ax1.set_ylabel('y1',color='r')
# 使用twinx()函数创建第二个y轴
ax2 = ax1.twinx()
# 使用ax2对象绘制第二个曲线
ax2.plot(x,y2,color='g')
# 设置y轴标签
ax2.set_ylabel('y2',color='g')
# 添加标题
plt.title('Matplotlib.pyplot.twinx() Example')
# 显示图形
plt.show()
运行上述代码,将会显示一个包含两条曲线的图形,如下所示:
在上面的代码中,我们创建了两个y轴,一个用于绘制y1数据,另一个用于绘制y2数据。
Matplotlib.pyplot.twinx()函数创建的两个y轴标度是不同的,因此,可能需要使用y轴刻度标签来更好地区分它们。以下是使用yticks()函数在每个y轴上设置刻度标签的示例。
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
x = np.linspace(0,10,100)
y1 = x
y2 = x**2
# 创建figure对象和子图
fig, ax1 = plt.subplots()
# 使用ax1对象绘制第一个曲线
ax1.plot(x,y1,color='r')
# 设置y轴标签
ax1.set_ylabel('y1',color='r')
# 使用twinx()函数创建第二个y轴
ax2 = ax1.twinx()
# 使用ax2对象绘制第二个曲线
ax2.plot(x,y2,color='g')
# 设置y轴标签
ax2.set_ylabel('y2',color='g')
# 在每个y轴上设置刻度标签
ax1.set_yticks(np.arange(0,11,2))
ax2.set_yticks(np.arange(0,101,20))
ax1.tick_params(axis='y', labelcolor='r')
ax2.tick_params(axis='y', labelcolor='g')
# 添加标题
plt.title('Matplotlib.pyplot.twinx() Example')
# 显示图形
plt.show()
运行上述代码,将会显示一个包含两个y轴刻度标签的图形,如下所示:
上述代码中,使用了yticks()
函数来设置刻度标签。使用tick_params()
函数来设置y轴标签的颜色。