2014-10-31 102 views
3

我正在繪製一系列使用matplotlib的熱圖。沒有共享的Y軸,它可以正常工作。儘管我嘗試和分享y軸,但我遇到了一個問題。 x軸限制看起來已經受到損壞。matplotlib imshow subplots sharey break x limits

考慮以下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=Truesharey=False結果(所不同的是我想要y軸共享當然,現在不是):

Correct output with correct x limits

有沒有辦法解決這個問題?

回答

0

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()的行爲方式上一個單一的情節,以及它是如何在一個次要情節上。