matplotlib:对齐双y轴

时间:2014-05-31 22:44:49

标签: python matplotlib

The answer to this question建议我使用set_ylim / get_ylim来对齐两个双轴。但是,这对我来说似乎没有用。

代码段:

fig, ax1 = plt.subplots()

yLim = [minY, maxY]
xLim = [0, 0.01]

for x in analysisNumbers:
    ax1.plot(getData(x), vCoords, **getStyle(x))

ax1.set_yticks(vCoords)
ax1.grid(True, which='major')


ax2 = ax1.twinx()
ax2.set_yticks(ax1.get_yticks())
ax2.set_ylim(ax1.get_ylim())
ax2.set_ylim(ax1.get_ylim())

plt.xlim(xLim[0], xLim[1])
plt.ylim(yLim[0], yLim[1])

plt.minorticks_on()

plt.show()

图形输出(在新窗口中打开图像):

enter image description here

双轴应该是相同的,但它们不是。它们的标签是相同的,但它们的对齐方式不一致(参见零点不对齐)。怎么了?

1 个答案:

答案 0 :(得分:0)

正如tcaswell在评论中指出的那样,plt.ylim()仅影响其中一个轴。如果你替换这些行:

ax2.set_ylim(ax1.get_ylim())
ax2.set_ylim(ax1.get_ylim())

plt.xlim(xLim[0], xLim[1])
plt.ylim(yLim[0], yLim[1])

用这个:

ax1.set_ylim(yLim[0], yLim[1])
ax2.set_ylim(ax1.get_ylim())

plt.xlim(xLim[0], xLim[1])

我会猜测你的意图。