1

将 pandas Series 传递给 pyplot 的 fill_between() 函数会产生以下错误:

<type 'exceptions.KeyError'> -1

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

4

2 回答 2

1

因为matplotlib被编写为将序列或np.ndarray类似对象作为参数(并且对 不了解pandas)。在内部使用的所有方法对pandas对象和numpy对象都一样的情况下,它就起作用了(鸭子打字的魔力)。在pandas对象行为不正确的情况下(在这种情况下v[-1]用于获取第一个维度的最后一个元素),它将引发错误。

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

于 2013-07-28T16:36:05.513 回答
1

直到pandas功能上没有正式实现,plt.fill_between你仍然可以应用pd.Series或者pd.DataFrameas来做图。pd.Series().valuespd.DataFrame().valuesfill_between

于 2013-12-19T22:09:31.263 回答