我正在使用 matplotlib 绘制一系列热图。没有共享的 y 轴,它工作正常。不过,当我尝试共享 y 轴时遇到了问题。 x 轴限制似乎被破坏了。
考虑以下 MWE:
import matplotlib
print matplotlib.__version__ # prints "1.4.2"
import matplotlib.pyplot as plt
data = [[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]]
nrows, ncols = 1, 4
fig, axes = plt.subplots(nrows, ncols, sharey=True)
for j in range(ncols):
xs = axes[j]
# seems to have no impact when sharey=True
#xs.set_xlim(-0.5, 2.5)
xs.imshow(data, interpolation='none')
plt.show()
错误的输出如下:
虽然简单地将 sharey=True
更改为 sharey=False
会导致正确的输出(当然我希望共享 y 轴除外,这现在不是了):
有办法解决这个问题吗?
最佳答案
从here中得到答案:
ax.set_adjustable('box-forced')
所以:
for j in range(ncols):
xs = axes[j]
xs.set_adjustable('box-forced')
xs.imshow(data, interpolation='none')
这似乎是有意为之的行为,您需要指定它以协调 imshow() 在单个图上的行为方式与它在子图上的行为方式之间的差异。
关于python - matplotlib imshow 子图 sharey 打破了 x 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26667902/