2017-10-16 64 views
-1

我有一個matplotlib圖形,兩個子圖,一個在另一個上面。 我正在生成一組類似的圖形,但只想在該集合中的第一個座標軸,標籤,標題等。 然後我想將這些插入到一個文件中,讓它們排成一行,並且大小相同。matplotlib在去除軸和顏色條後不會重新縮放圖像

我遇到的問題是,當我切換網格,座標軸,顏色條等時,子圖中的圖像展開以填充先前由文本/刻度所佔用的空間。

有沒有辦法刪除我的軸標籤,但保持圖像相同的大小(例如,也許這樣matplotlib'認爲'那裏有東西,但顯示它)?我試圖使用

plt.xlabel('') 

但這不起作用,並且沒有用於替換軸的類似方法。 或者,我可以指定子圖的大小和位置,以便固定它們的圖像,而不管它們是否具有座標軸。

當變量'colorbar'和'grid'設置爲'off'時,我希望圖像保持不變,而不是變大以填充空白區域。

示例代碼:

import numpy as np 
import matplotlib.pyplot as plt 

filename = 'outputimage.png' 
grid = 'on' 
colorbar = 'on' 

r = np.linspace(0,1.0,11) 
z = np.linspace(0,1.0,11) 
data1 = np.zeros([10,10]) 
data2 = np.zeros([10,10]) 
for i in range(10): 
    for j in range(10): 
     data1[i,j] = r[i]*z[j] 
     data2[i,j] = -r[i]*z[j] 
R, Z = np.meshgrid(r, z) 

fig = plt.figure(1,facecolor="white",figsize=(3.5,10),dpi=200) 

plt.subplot(211) 
ax = plt.gca() 
im11 = ax.pcolormesh(R, Z, data1) 
ax.set_aspect('equal',adjustable='box') 
if grid == 'on': 
    plt.axis('on') 
    plt.xlabel(r'r') 
    plt.ylabel(r'z') 
    plt.title('data1') 
else: 
    plt.axis('off') 
    plt.xlabel(' ') 
    plt.ylabel(' ') 
    plt.title(' ') 
if colorbar == 'on': 
    CBI = plt.colorbar(im11, orientation='vertical') 

plt.subplot(212) 
ax = plt.gca() 
im21 = ax.pcolormesh(R, Z, data2) 
ax.set_aspect('equal',adjustable='box') 
plt.xlabel(r'r') 
plt.ylabel(r'z') 
plt.axis('off') 
if colorbar == 'on': 
    CB = plt.colorbar(im21, orientation='vertical') 
if grid == 'on': 
    plt.title('data2') 
else: 
    plt.title(' ') 

plt.tight_layout(h_pad=2.0) 

plt.savefig(filename) 

主要生產: when colorbar and grid set 'on' when colorbar and grid set 'off' Wheras我想第二圖像是相同的第一,只是沒有顏色條和文字。

NB - 我正在使用matplotlib2tikz如果有一種方法使用它呢?

+1

您能否提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)? – DavidG

+0

已經這樣做(見上文)。 – FluidFox

+2

@FluidFox你沒有:'FileNotFoundError:[Errno 2]沒有這樣的文件或目錄:'output.0008'。除了你的代碼看起來不像「最小」。 – Goyo

回答

2

您特別要求matplotlib不要通過調用plt.tight_layout()來保持座標軸相同的尺寸。

刪除plt.tight_layout()和你的軸應保持相同的大小,獨立於是否有標籤。

+0

改善了事情,謝謝。但是,現在我的標題和軸標籤重疊,並且添加plt.subplots_adjust(wspace = 10)似乎沒有幫助。添加顏色條時,我也會得到一些左右移動。 – FluidFox

+0

這些都是常見的問題,也有共同的解決方案。以上回答了這個問題。如果你想要問別的問題,可以問一下其他問題 - 如果在SO上發現的解決方案沒有幫助,請明確說明它們有多遠。 – ImportanceOfBeingErnest

+0

我在SO上找到的重疊標題和軸標籤的解決方案是使用plt.tight_layout(),但這是我現在刪除的內容。另一個答案建議plt.subplots_adjust(wspace = 10),但這對我沒有任何影響。我會着眼於色條問題。 – FluidFox

相關問題