matplotlib: 对齐双y轴
这个问题的答案建议我尝试使用 set_ylim
和 get_ylim
来对齐两个双Y轴。但是,这对我来说似乎没有效果。
代码片段:
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()
图表输出(在新窗口打开图片):
这两个双Y轴应该是一样的,但实际上并不是。它们的标签是相同的,但对齐却不一样(看看零点没有对齐)。这是怎么回事呢?
1 个回答
1
正如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])
这样做的话,应该就能达到你想要的效果了。