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

最佳答案

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

例如。

关于python - Gridspec 范围错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33221544/

10-11 13:24