2016-08-16 20 views
0

我試圖用imshow在單獨的圖中繪製幾個數組的值。在子圖環境中使用時matplotlib.pyplot.imshow的邊距

當我只繪製一張圖片,並使用帶正確範圍的plt.imshow()命令時,該圖完美呈現。但是,當我嘗試在同一圖中使用plt.subplot()創建此圖像的多個圖時,這些圖中的每一個都以不正確的x軸設置結束,並且有白色邊距。我試着用set_xlim()命令糾正x軸範圍,但它沒有效果(我也不明白)。

最小的工作示例如下 - 任何幫助將不勝感激!

from matplotlib import pyplot as plt 
import numpy as n 

image = n.array([[ 1., 2., 2., 5.], 
    [ 1., 0., 0., 3.], 
    [ 1., 2., 0., 2.], 
    [ 4., 2., 3., 2.]]) 
xextent, yextent= n.shape(image) 

fig, ax = plt.subplots(2,sharex=True, sharey=True) 
im0 = ax[0].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest'); 
ax[0].set_xlim([0,4]) 
im1 = ax[1].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest'); 
ax[1].set_xlim([0,4]) 

plt.show() 

enter image description here

+0

這似乎是通過在'subplots'調用上設置'sharex'和'sharey'觸發的。你需要這些用於你的用例嗎? – xnx

+0

我明白了,謝謝。但是,是的,我確實需要這些 - 最後我想要一個四乘四的情節,我不想浪費在標籤上的空間。 – mzzx

+0

在這種情況下,您最好手動關閉不需要它們的子圖上的刻度線和軸標籤。 – xnx

回答

0

因此,選項有:

  1. 取出sharex/sharey關鍵字 - 似乎在次要情節環境imshow發生衝突。 (由xnx建議)

  2. 使用plt.subplots_adjust與適當的設置,與plt.gcf().tight_layout()組合(由mwormser建議)

  3. 使用pcolormesh,而不是在插曲環境imshow。

1

相信對於空白的原因是窗口的大小。您可以更改窗口大小(您必須找出數字),也可以調整子圖。我通過彈出圖像彈出框中的「配置子圖」按鈕來發現這一點。

plt.subplots_adjust(right=0.4) 

這一行的情節不會有任何的空白,但還是有些空的空間(您可以通過調整窗口大小確定)。

+0

好的,這是有效的。當我玩上面,下面和左邊等時,我也可以將它用於四分之一的子場景。它確實使這些圖像(對於電影而言)產生很多有點困難,特別是因爲我想在插入的一側使用彩色條一個插入 - 然後轉移,所以它涉及很多玩。如果沒有更適合多重圖像生成的情況,將會接受答案 - 謝謝! – mzzx

+0

很高興幫助,即使只有一點。我猜如果你有更大的地塊擴大標準數字的大小,問題就會消失。使用'plt.gcf()。tight_layout()'來自動修復圖的排列幾乎總是一個好主意。 – Ian

相關問題