2015-10-19 292 views
3

我有一個matplotlib的gridspec簡單的錯誤,我似乎無法弄清楚。有人能告訴我我要去哪裏嗎?Gridspec範圍錯誤

import matplotlib.pyplot as plot 
import matplitlib.gridspec as gridspec 
gs = gridspec.GridSpec(1,3, width_ratios = [1,1], height_ratios = [2,1]) 
fig = plot.figure(figsize=(20,10)) 
ax1 = plot.subplot(gs[:, :-1]) 
ax2 = plot.subplot(gs[:, -1]) 

我此代碼得到的錯誤是

IndexError: index 4 is out of bounds for axis 0 with size 4

這是沒有道理給我。我認爲我用這段代碼說的是,第一個軸(ax1)應占用所有行,並位於前兩列。第二個軸(ax2)應該佔據所有行,並且只存在於第三列中。這不是我的代碼實際上意味着什麼?

回答

4

gs = gridspec.GridSpec(1,3)表示有1行和3列,但 width_ratios = [1,1]意味着有2列和height_ratios = [2,1]意味着有2行。不幸的是matplotlib不趕後的gs實例化的矛盾,但矛盾導致當

ax1 = plot.subplot(gs[:, :-1]) 

被稱爲錯誤後。修復錯誤,可以指定3寬度比和一個單一的高度比:

gs = gridspec.GridSpec(1,3, width_ratios=[1,2,3], height_ratios=[1]) 

例如。

+0

啊,這就是發生了什麼事。非常感謝你。 –

+0

請注意,如果您將比率作爲「map(...)'提供,它可能在Py2中運行時沒有錯誤,但是會在Py3中引發此錯誤。這發生在我的情況 – deeenes