2015-10-19 446 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