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

时间:2010-09-06 22:27:57

标签: 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轴,而不仅仅是左边的轴。每个轴的比例会有所不同。我得到的是仅与左手轴上的值匹配的网格线。

Matplotlib可以为我解决这个问题,还是我必须自己做?

编辑:不要以为我是完全清楚的,我希望两个y轴上的主要刻度都对齐但是尺度和范围可能非常不同,因此设置分钟和设置很困难maxes手动实现这一目标。我希望matplotlib能够为我做这个“棘手”的事情。感谢

1 个答案:

答案 0 :(得分:3)

修改

考虑这个简单的例子:

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()

alt text