2015-12-28 69 views
1

當用matplotlib創建子圖時,您需要從1開始,而大多數其他python事件以零開始。因此,創建第一個副區(左上)爲什麼matplotlib子圖開始於1

ax = fig.add_subplot(3,4,1) 

在哪裏我本來期望0是第一次要情節

ax = fig.add_subplot(3,4,0) 

我已經看到了「我們從MATLAB得到這個」的解釋,但這似乎是一個特別令人不滿意的答案。

+6

然而「我們從matlab得到這個」是答案! – Simon

+1

我發現自己更經常使用['subplots'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplots)。它返回一個'Axis'對象數組,你可以用通常的Python方式索引數組。 –

+0

我剛剛發現'plt.subplot2grid'也是pythonic – jlansey

回答

2

答案的確是:「這意味着matlab兼容性」。根據快捷整數表示法(subplot(231)而不是subplot(2,3,1))有一個小優點。如果不使用字符串,則無法以這種方式表示基於0的系統。但是,該快捷方式通常不是一個好主意,應該只用於可讀性不受關注的交互式場景中。

正如@Cong Ma提到的,在大多數情況下,您會使用subplots並索引一個二維數組而不是matlab樣式的數值系統。這是一個更全面的方法。

例如:

import matplotlib.pyplot as plt 

fig, axes = plt.subplots(nrows=2, ncols=3) 
axes[0, 0].plot(range(10)) 

plt.show() 

這不完全相同,因爲它也將所有的次要情節,但你總是可以隱藏你不想可見(ax.axis('off')ax.set(visible=False))中的那些。

相關問題