【问题标题】:Can't pass pandas Series to pyplot's fill_between function?不能将 pandas Series 传递给 pyplot 的 fill_between 函数?
【发布时间】:2013-07-28 16:09:03
【问题描述】:

将熊猫系列传递给 pyplot 的 fill_between() 函数会产生以下错误:

<type 'exceptions.KeyError'> -1

但是,其他 pyplot 函数似乎可以将 Series 作为输入(plot() 和 scatter() 似乎可以正常工作)。我知道这个问题可以通过传递 my_series.value 而不是 my_series 来解决,但是有人可以解释为什么某些 pyplot 绘图函数似乎可以将 Series 作为输入,而其他函数则不行?给定 Series 时哪些函数会崩溃?谢谢。

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    因为matplotlib 被编写为将序列或np.ndarray-like 对象作为参数(并且对pandas 一无所知)。在内部使用的所有方法在 pandas 对象和 numpy 对象上都相同的情况下,它会起作用(鸭子打字的魔力)。如果pandas 对象的行为不正确(在这种情况下使用v[-1] 来取出第一个维度的最后一个元素),则会引发错误。

    如果给定函数与pandas 对象一起使用取决于函数的内部结构,并且即使在mpl 的次要版本之间也不能保证稳定,因为您实际上是以一种未记录的方式使用matplotlib

    【讨论】:

      【解决方案2】:

      直到pandasplt.fill_between函数中没有正式实现,你仍然可以应用pd.Seriespd.DataFrame作为pd.Series().valuespd.DataFrame().values来制作fill_between绘图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-18
        • 2013-07-08
        • 1970-01-01
        相关资源
        最近更新 更多