Python pyplot.fill_between:ufunc'isfinite'不支持输入类型,

Python pyplot.fill_between:ufunc'isfinite'不支持输入类型,,python,matplotlib,charts,Python,Matplotlib,Charts,我很难让fill_-between方法正常工作 情景:我试图逐季度绘制经济数据图表,并试图突出图表中数字下降与复苏/增长的部分 下面是我正在使用的代码片段 fig, ax = plt.subplots(figsize = (15, 4)) #plot the vector x = ['Q1 2000', 'Q2 2000', 'Q3 2000', 'Q4 2000', 'Q1 2001', 'Q2 2001', 'Q3 2001', 'Q4 2001', 'Q1 2002', 'Q2 2002

我很难让fill_-between方法正常工作

情景:我试图逐季度绘制经济数据图表,并试图突出图表中数字下降与复苏/增长的部分

下面是我正在使用的代码片段

fig, ax = plt.subplots(figsize = (15, 4))

#plot the vector
x = ['Q1 2000', 'Q2 2000', 'Q3 2000', 'Q4 2000', 'Q1 2001', 'Q2 2001', 'Q3 2001', 'Q4 2001', 'Q1 2002', 'Q2 2002', 'Q3 2002', 'Q4 2002', 'Q1 2003', 'Q2 2003', 'Q3 2003', 'Q4 2003', 'Q1 2004', 'Q2 2004', 'Q3 2004', 'Q4 2004', 'Q1 2005', 'Q2 2005', 'Q3 2005', 'Q4 2005', 'Q1 2006', 'Q2 2006', 'Q3 2006', 'Q4 2006', 'Q1 2007', 'Q2 2007', 'Q3 2007', 'Q4 2007']
y = [402487852, 412644261, 410514408, 413488734, 406660923, 412554119, 407651445, 406860089, 400229102, 407450305, 405037469, 406487811, 398565014, 405405583, 403636107, 406473546, 401454557, 409973402, 409031867, 413206392, 407925829, 416732737, 417266345, 420148526, 416358183, 424753488, 423598265, 426746034, 421871312, 429850192, 427422632, 430316935]
ax.plot(x = x, y = y , color = 'navy', linewidth = 2, alpha = 0.8, label = None)
        
#color the decline, recovery, and growth
ax.fill_between(x = ('Q4 2000', 'Q1 2003'), y1 = 398565014, y2 = 413488734
, color = 'red', alpha = 0.1, label = 'Decline')
ax.fill_between(x = ('Q1 2003', 'Q2 2005'), y1 = 398565014, y2 = 413488734, color = 'gold', alpha = 0.1, label = 'Recovery')
ax.fill_between(x = ('Q2 2005', 'Q2 2005'), y1 = 413488734, y2 = 413488734, color = 'green', alpha = 0.1, label = 'Growth')
这给了我以下信息:

我想做的是仅对中间线和绘制线之间的区域进行着色。

使中间线之间的填充仅填充x区域的一部分的一种方法是:

以数字形式提供x值;分类轴的x值的内部表示仅为数字0,1,2,。。。这与np.arangelenx一致 由于y1具有所有y值,因此需要给出所有x值 where=参数只能用于选择值的子集 下面是一些示例代码:

从matplotlib导入pyplot作为plt 从matplotlib导入代码 将numpy作为np导入 x=['2000年第一季度'、'2000年第二季度'、'2000年第三季度'、'2000年第四季度'、'2001年第一季度'、'2001年第三季度'、'2001年第四季度'、'2002年第一季度'、'2002年第二季度', ‘2002年第三季度’、‘2002年第四季度’、‘2003年第一季度’、‘2003年第二季度’、‘2003年第三季度’、‘2003年第四季度’、‘2004年第一季度’、‘2004年第二季度’、‘2004年第四季度’, ‘2005年第一季度’、‘2005年第二季度’、‘2005年第三季度’、‘2005年第四季度’、‘2006年第一季度’、‘2006年第三季度’、‘2006年第四季度’、‘2007年第一季度’、‘2007年第二季度’, ‘2007年第三季度’、‘2007年第四季度’] y=[402487852412644261410514408,413488734,406660923,412554119,407651445406860089,400229102407450305, 405037469, 406487811, 398565014, 405405583, 403636107, 406473546, 401454557, 409973402, 409031867, 413206392, 407925829, 416732737, 417266345, 420148526, 416358183, 424753488, 423598265, 426746034, 421871312, 429850192, 427422632, 430316935] 图,ax=plt.子图尺寸=15,4 ax.plotx,y,color='navy',线宽=2,alpha=0.8,标签=None 席仑 在nx=xi,y1=y,y2=413488734,颜色为红色,alpha=0.1,标签为递减,
其中,席=X>=x.NoxxQ4 2000’和席=X.NoxxQ1 2003’,Xi=X.NoxxQ2’2005’,席席I得到以下错误:“操作数不能与形状2, 32一起广播,”“看起来像是这样,但我需要验证它在我的类对象中正确运行。完成后我会检查/投票。泰!参见正文编辑-相同的问题问题问题似乎是test.y,它应该是数字,以便fill_between正确工作。你能转换它吗?例如,y=np.arrayy,dtype=intyes如果可以的话,我已经编辑了类对象以只捕获数值。我我现在正在测试它的其余部分。现在似乎可以了,谢谢。