我有一個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如果有一種方法使用它呢?
您能否提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)? – DavidG
已經這樣做(見上文)。 – FluidFox
@FluidFox你沒有:'FileNotFoundError:[Errno 2]沒有這樣的文件或目錄:'output.0008'。除了你的代碼看起來不像「最小」。 – Goyo