2012-06-05 41 views
6

我有問題,matplotlib子圖使我困惑。我不知道我想預先繪製的小區的數量,但是我知道我希望它們分成兩排。所以我不能使用用matplotlib進行多點繪圖而不知道運行前的圖的數量

plt.subplot(212) 

因爲我不知道我應該提供的號碼。

它應該是這樣的:

example for plot

現在我繪製所有的情節放到一個文件夾,並把它們與插畫在一起,但必須有與matplotlib一個更好的辦法。如果我不清楚什麼地方,我可以提供我的代碼。

+0

一個DIY的方法是使用'axes.set_position()'http://stackoverflow.com/questions/10881520/alignment-of-stacked-subplots/10881881#10881881 –

+1

你的意思是你直到運行時才知道地塊的數量,或者直到你已經開始處理一些地塊?如果是前者,則可以使用顯式語法:'plt.subplot(2,n_rows,2)'其中n_rows是您的圖/ 2的數量。 – pelson

+0

您可以將此作爲答案嗎?我會接受它。 – tarrasch

回答

7

我的理解是,你只知道在運行時曲線的數量,因此與語法速記掙扎,如:

plt.subplot(121) 

值得慶幸的是,爲了節省你做一些尷尬的數學弄清楚這個數字編程,還有另外一個接口,它允許您使用以下形式:

plt.subplot(n_cols, n_rows, plot_num) 

所以你的情況,考慮你想要n圖,你可以這樣做:

n_plots = 5 # (or however many you programatically figure out you need) 
n_cols = 2 
n_rows = (n_plots + 1) // n_cols 
for plot_num in range(n_plots): 
    ax = plt.subplot(n_cols, n_rows, plot_num) 
    # ... do some plotting 

另外,還有一個稍微更Python接口,你可能希望知道:

fig, subplots = plt.subplots(n_cols, n_rows) 
for ax in subplots: 
    # ... do some plotting 

(注意,這是不subplots()平原subplot())。雖然我必須承認,但我從未使用過後一種界面。

HTH

相關問題