Matplotlib Imshow子图共用y轴,限制x轴范围

4
我正在使用matplotlib绘制一系列热力图。如果没有共享y轴,它可以正常工作。但当我试图共享y轴时就会遇到问题,x轴的限制似乎被改变了。
请看下面的最小工作示例:
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 轴,但实际上不会): Correct output with correct x limits 有没有办法解决这个问题?

1个回答

1
这里获得答案:
ax.set_adjustable('box-forced')

所以:
for j in range(ncols):
    xs = axes[j]
    xs.set_adjustable('box-forced')   
    xs.imshow(data, interpolation='none')

似乎这是故意的行为,你需要指定这一点来调解imshow()在单个图上的行为和在子图上的行为之间的差异。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接