如果我有一系列的次要情節與一列和多行,即:調整個別次要情節的高度在matplotlib在Python
plt.subplot(4, 1, 1) # first subplot
plt.subplot(4, 1, 2) # second subplot
# ...
我怎麼能調整前N次要情節的高度?例如,如果我有4個子圖,每個子圖都在其自己的行上,我希望它們都具有相同的寬度,但前3個子圖較短,即它們的y軸較小,佔用的區域少於該行中最後一個繪圖的y軸。我怎樣才能做到這一點?
謝謝。
如果我有一系列的次要情節與一列和多行,即:調整個別次要情節的高度在matplotlib在Python
plt.subplot(4, 1, 1) # first subplot
plt.subplot(4, 1, 2) # second subplot
# ...
我怎麼能調整前N次要情節的高度?例如,如果我有4個子圖,每個子圖都在其自己的行上,我希望它們都具有相同的寬度,但前3個子圖較短,即它們的y軸較小,佔用的區域少於該行中最後一個繪圖的y軸。我怎樣才能做到這一點?
謝謝。
有多種方法可以做到這一點。最基本的(和最靈活)的方法是隻調用是這樣的:
import matplotlib.pyplot as plt
plt.subplot(6,1,1)
plt.subplot(6,1,2)
plt.subplot(6,1,3)
plt.subplot(2,1,2)
,這將給你這樣的:
然而,這是不是很靈活。如果你正在使用matplotlib> = 1.0.0,請使用GridSpec。這是相當不錯的,而且是一種更靈活的佈局子圖的方式。
我相信這個答案是次優的,下面的答案應該是接受的答案 – NameOfTheRose 2015-08-21 17:16:20
@ user2422503 - 請注意日期和參考下面的答案。那時候,subplot2grid/GridSpec/etc是非常新的,大多數人都在使用一個沒有包含它的matplotlib版本。因此,我展示了更廣泛的解決方案,並指出了更新,更清潔的解決方案。 – 2015-08-21 20:02:50
@ Joe Kington,對不起 – NameOfTheRose 2015-08-22 03:44:26
儘管這個問題很老,但我還是想回答一個非常類似的問題。 @ Joe對AxesGrid的引用是我的問題的答案,並且有很直接的用法,所以我想說明這個功能的完整性。
AxesGrid功能提供的能力,創建不同大小的地塊,並將它們非常明確,通過subplot2grid
功能:
import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((m, n), (row_1, col_1), colspan = width)
ax2 = plt.subplot2grid((m, n), (row_2, col_2), rowspan = height)
ax1.plot(...)
ax2.plot(...)
注意,最大值爲row_n
,col_n
是m-1
和n-1
分別爲零索引符號被使用。
具體處理這個問題,如果總共有5個子圖,其中最後一個子圖的高度是其他子圖的兩倍,那麼我們可以使用m=6
。
ax1 = plt.subplot2grid((6, 1), (0, 0))
ax2 = plt.subplot2grid((6, 1), (1, 0))
ax3 = plt.subplot2grid((6, 1), (2, 0))
ax4 = plt.subplot2grid((6, 1), (3, 0))
ax5 = plt.subplot2grid((6, 1), (4, 0), rowspan=2)
plt.show()
感謝發佈 - 我需要這樣做,這正是我正在尋找的。 – 2013-02-13 17:31:10
這非常簡單,比接受的答案效果更好 – jjz 2016-09-03 22:03:40
使用tight_layout。這個鏈接有很好的例子:http://matplotlib.org/users/tight_layout_guide.html。爲了使它工作,你需要改變figsize例如'plt.figure(figsize =(10,1.5 * plotsToPlot))'其中'plotsToPlot'是一個圖中子圖的數量。 – Dilawar 2015-03-12 11:41:14
使用[AxesGrid工具包](http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.html#axesgrid)。 – vtorhonen 2010-07-25 17:08:32