在(…)之间填充Matplotlib';我不做周期索引

在(…)之间填充Matplotlib';我不做周期索引,matplotlib,Matplotlib,我一直在努力让它在很多方面都能起作用,但它就是不起作用。有人知道怎么修吗 下面是一个简单的玩具代码 index=pd.period\u范围('1990-1','2000-1',freq='M') df=pd.DataFrame({1:[1]*len(index),2:[10]*len(index)},index=index) plt.fill_介于(索引,x[1],x[2]) 这行不通。如果您将index.forindex.to\u timestamp()的索引更改为,则它可以正常工作 显示的

我一直在努力让它在很多方面都能起作用,但它就是不起作用。有人知道怎么修吗

下面是一个简单的玩具代码

index=pd.period\u范围('1990-1','2000-1',freq='M')
df=pd.DataFrame({1:[1]*len(index),2:[10]*len(index)},index=index)
plt.fill_介于(索引,x[1],x[2])
这行不通。如果您将
index.for
index.to\u timestamp()
索引更改为
,则它可以正常工作

显示的错误是

~\Miniconda3\lib\site packages\matplotlib\axes\\u axes.py中间填充(self,x,y1,y2,其中,插值,步长,**kwargs)
5226
5227#处理统一的数据,如日期
->5228自处理单元信息(扩展数据=x,ydata=y1,kwargs=kwargs)
5229自我处理单元信息(ydata=y2)
5230
~\Miniconda3\lib\site packages\matplotlib\axes\\u base.py in\u process\u unit\u info(self、xdata、ydata、kwargs)
2123返回kwargs
2124
->2125 kwargs=_进程_单轴(扩展数据、self.xaxis、'xunits',kwargs)
2126 kwargs=_进程_单轴(ydata,self.yaxis,'yunits',kwargs)
2127返回kwargs
~\Miniconda3\lib\site packages\matplotlib\axes\\u base.py in\u process\u single\u axis(数据、轴、单位名称、kwargs)
2106#我们只需要在没有任何设置的情况下进行更新。
2107如果不是轴,则具有_单位()
->2108轴。更新单位(数据)
2109
2110#检查kwargs中的单位,如果存在更新轴
~\Miniconda3\lib\site packages\matplotlib\axis.py,单位为更新单位(自身,数据)
1496
1497如果需要新的:
->1498自更新axisinfo()
1499 self.stale=True
1500返回真值
更新axisinfo中的~\Miniconda3\lib\site packages\matplotlib\axis.py(self)
1532 self.isDefault\u标签=真
1533
->1534 self.set_default_interval()
1535
1536 def具有_装置(自身):
~\Miniconda3\lib\site packages\matplotlib\axis.py以设置的默认间隔(self)
2170如果info.default\u limits不是无:
2171 valmin,valmax=info.default\u限制
->2172 xmin=self.converter.convert(valmin,self.units,self)
2173 xmax=self.converter.convert(valmax,self.units,self)
2174如果没有数据突变:
转换中的~\Miniconda3\lib\site packages\pandas\plotting\\u matplotlib\converter.py(值、单位、轴)
207值=[PeriodConverter.\u转换\u 1d(v,单位,轴)表示v值]
208其他:
-->209个值=周期转换器。_convert_1d(值、单位、轴)
210返回值
211
转换1d中的~\Miniconda3\lib\site packages\pandas\plotting\\u matplotlib\converter.py(值、单位、轴)
213定义转换(值、单位、轴):
214如果不是hasattr(轴,“频率”):
-->215 raise TypeError(“轴必须设置'freq`以转换为周期”)
216有效的_类型=(str、datetime、Period、pydt.date、pydt.time、np.datetime64)
217如果isinstance(值、有效类型)或is integer(值)或is float(值):
TypeError:轴必须设置'freq',才能转换为句点
如果有人能帮我解决这个问题,我会非常感激的!谢谢

第一个更正:索引是数据帧属性的名称, 因此,请使用一些“类似”的名称,例如:

idx = pd.period_range('1990-1', '2000-1', freq='M')
然后将数据帧创建为:

df = pd.DataFrame({1:[1]*len(idx), 2:[10]*len(idx)}, index=idx)
可以填充两条线之间的空间,但首先绘制线 他们自己:

df.plot()
然后您可以填充它们之间的空间:

plt.fill_between(idx, df[1], df[2]);
(请注意,您编写了x而不是df)

显然,plt要求提前绘制两条边界线 或者至少是其中一个。但是当你有了它,画面看起来会更好 两条边界线都是用另一种颜色绘制的,而不是它们之间的间距,
因此,更自然地绘制两条线。

您确定正在运行最新的matplotlib和pandas版本吗?