三行代码  ›  专栏  ›  技术社区  ›  catlean

具有matplotlib子批次的数组的索引太多

  •  0
  • catlean  · 技术社区  · 1 月前

    我试图绘制2个不同的数据集,但我不知道如何修复子图(如果我放置2,2,它会工作,但如果我尝试其他任何操作,它会给我一个错误)

    fig, axs = plt.subplots(nrows=2, ncols=1)
    
    axs[0,1].plot(adj_close['SOL-USD'])
    axs[2,1].set_title('SOL')
    
    plt.show()
    

    错误:

    
    ----> 6 axs[0,0].plot(adj_close['SOL-USD'])
          7 axs[0,0].set_title('SOL')
          8 axs[0,1].plot(adj_close['ETH-USD'])
    
    TypeError: 'AxesSubplot' object is not subscriptable
    
    IndexError                                Traceback (most recent call last)
    Input In [356], in <cell line: 3>()
          1 #ploting the histogram
          2 fig, axs = plt.subplots(2,1,figsize=(16,8),gridspec_kw ={'hspace': 0.2, 'wspace': 0.1})
    ----> 3 axs[0,0].hist(returns['SOL-USD'], bins=50, range=(-0.2, 0.2))
          4 axs[0,0].set_title('SOL')
          5 axs[1,0].hist(returns['ETH-USD'], bins=50, range=(-0.2, 0.2))
    
    IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
    

    子地块2,2的当前外观: what it currently looks like with subplot 2,2

    2 回复  |  直到 1 月前
        1
  •  2
  •   kmontocam    1 月前

    这里发生的事情是 matplotlib.pyplot.subplots() 如果nrows或ncols等于1,则为图中的轴创建一维数组。通过在当前工作区中显示变量,可以看到这一点。

    >>> fig, axes = plt.subplots(nrows=2, ncols=1)

    >>> axes

    array([<AxesSubplot:>, <AxesSubplot:>], dtype=object)

    这就是为什么在尝试调用多个时会出现索引错误。有关更多文档,请访问函数的网站 matplotlib.pyplot.subplots

        2
  •  0
  •   Michael Delgado    1 月前

    请参见 matplotlib.pyplot.subplots 文档有一个可选参数 squeeze 违约 True :

    挤压 : 布尔,默认值:True
    如果为True,则会从返回的轴数组中挤出额外的维度:

    • 如果只构造了一个子地块(nrows=ncols=1),则生成的单轴对象将作为标量返回。

    • 对于Nx1或1xM子地块,返回的对象是轴对象的1D numpy对象数组。

    • 对于NxM,子批次为N>1和M>1作为2D数组返回。

    如果为False,则根本不进行压缩:返回的Axes对象始终是一个包含Axes实例的2D数组,即使它最终是1x1。

    因此,默认为 squeeze=True ,轴的形状将不同,具体取决于参数:

    • plt.subplots(1, 1) --&燃气轮机;仅有一个的 Axis 对象
    • plt.subplots(1, n) --&燃气轮机;的一维向量 物体
    • plt.subplots(n, 1) --&燃气轮机;的一维向量 物体
    • plt.subplots(n, m) --&燃气轮机;二维数组 物体