【问题标题】:Gridspec range errorGridspec 范围错误
【发布时间】:2016-01-18 05:18:02
【问题描述】:

我对 matplotlib 的 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) 应该占据所有行,并且只位于第三列。这不是我的代码的实际含义吗?

【问题讨论】:

    标签: python python-2.7 matplotlib plot


    【解决方案1】:

    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])
    

    例如。

    【讨论】:

    • 啊,原来如此。非常感谢。
    • 请注意,如果您以map(...) 的形式提供比率,它可能会在 Py2 中正常运行,但在 Py3 中会抛出此错误。这发生在我的案例中
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多