我正在尝试为相同的数据创建一个带有两个Y轴(左和右)的绘图,也就是说,一个是另一个的缩放版本。我还想保留刻度位置和网格位置,因此网格将匹配两侧的刻度。
我试图通过绘制两次相同的数据来做到这一点,一个是原样,另一个是缩放的,但它们并不重合。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(17, 27, 0.1)
y1 = 0.05 * x + 100
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y1/max(y1), 'g-')
ax1.set_xlabel('X data')
ax1.set_ylabel('Y data', color='g')
ax2.set_ylabel('Y data normalized', color='b')
plt.grid()
plt.show()
任何帮助将不胜感激。
答案 0 :(得分:0)
不确定是否可以在标准化轴上看到难看的数字而实现此目的。但如果这不会给您带来麻烦,请尝试将其添加到您的代码中:
ax2.set_ylim([ax1.get_ylim()[0]/max(y1),ax1.get_ylim()[1]/max(y1)])
ax2.set_yticks(ax1.get_yticks()/max(y1))
可能不是最优雅的解决方案,但它会缩放您的轴限制并勾选位置,与您对数据本身的操作类似,因此网格与两个轴匹配。