matplotlib imshow subplots sharey break x limits

时间:2014-10-31 05:09:57

标签: python matplotlib

我正在使用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()  

输出错误如下:

Incorrect output with incorrect x limits

然而,只需将sharey=True更改为sharey=False即可得到正确的输出(除了我希望y轴在当前共享时,现在它不会被分享):< / p>

Correct output with correct x limits

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

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()在单个绘图上的行为与其在子绘图上的行为之间的差异。