Python Matplotlib:多个y轴,网格线应用于这两个轴?

Python Matplotlib:多个y轴,网格线应用于这两个轴?,python,matplotlib,Python,Matplotlib,我有一个带有两个y轴的Matplotlib图,创建方式如下: ax1 = fig.add_subplot(111) ax1.grid(True, color='gray') ax1.plot(xdata, ydata1, 'b', linewidth=0.5) ax2 = ax1.twinx() ax2.plot(xdata, ydata2, 'g', linewidth=0.5) 我需要网格线,但我希望它们应用于两个y轴,而不仅仅是左轴。每个轴的比例将不同。我得到的是仅与左手轴上的值匹配的网

我有一个带有两个y轴的Matplotlib图,创建方式如下:

ax1 = fig.add_subplot(111)
ax1.grid(True, color='gray')
ax1.plot(xdata, ydata1, 'b', linewidth=0.5)
ax2 = ax1.twinx()
ax2.plot(xdata, ydata2, 'g', linewidth=0.5)
我需要网格线,但我希望它们应用于两个y轴,而不仅仅是左轴。每个轴的比例将不同。我得到的是仅与左手轴上的值匹配的网格线

Matplotlib能帮我解决这个问题吗,还是我必须自己解决

编辑:我不认为我完全清楚,我希望两个y轴上的主刻度对齐,但刻度和范围可能非常不同,这使得手动设置最小值和最大值很困难。我希望matplotlib能够为我做这件“棘手”的事情。谢谢编辑

考虑这个简单的例子:

from pylab import *

# some random values
xdata = arange(0.0, 2.0, 0.01)
ydata1 = sin(2*pi*xdata)
ydata2 = 5*cos(2*pi*xdata) + randn(len(xdata))

# number of ticks on the y-axis
numSteps = 9;

# plot
figure()

subplot(121)
plot(xdata, ydata1, 'b')
yticks( linspace(ylim()[0],ylim()[1],numSteps) )
grid()

subplot(122)
plot(xdata, ydata2, 'g')
yticks( linspace(ylim()[0],ylim()[1],numSteps) )
grid()

show()

谢谢,我知道我可以手动设置限制,这正是我试图避免的:)这没有那么复杂,你所要做的就是取
ydata1
ydata2
的最小/最大值,并将其设置为两个轴的y限制,我认为这不会达到我想要的效果,我编辑了这个问题,试图澄清我想做什么。@Tim:我编辑了我的答案。。。现在你可以看到,图有两个不同的范围,但是y轴上的Ytick数量相同,谢谢,虽然这不是我所希望的,但它给了我获得想要的结果所需的信息。我不熟悉linspace()函数,这会使它更简单。