matplotlib折线图上的参数尺寸不兼容

时间:2019-01-02 07:42:00

标签: python matplotlib

尝试着色两个折线图之间的区域,但出现以下错误

  

“参数尺寸不兼容”

我曾尝试研究类似的问题,但似乎无法找到适合我的情况的解决方案。

df['Date'] = pd.DatetimeIndex(df['Date']).year
df = df[df['Date'] != 2015]
df_min = df[df['Element'] =='TMIN'].groupby('Date').aggregate({'Data_Value':np.average})
df_max = df[df['Element'] == 'TMAX'].groupby('Date').aggregate({'Data_Value':np.average})
n = np.array(len(df_min))
x = np.linspace(0,n,n,endpoint=True)
plt.plot(df_max, '-o',df_min,'-o')
plt.fill_between(x,df_min,df_max, color='grey',alpha='0.5')
plt.show()

链接到我指的数据库:Database

1 个答案:

答案 0 :(得分:1)

您的代码中存在两个问题:

  • 您的x基本上是一个长度为0的整数,而您需要传递一个与要填充的x刻度范围(以年为单位)相对应的值数组。
  • 您的df_mindf_max是DataFrame,而您应该传递的是与df_mindf_max对应的y值。可以使用df_min.valuesdf_max.values访问它们。但是,这是一个或多个数组。然后,您需要flatten以获得一维数组才能使用fill_between

以下是一种解决方案:

x = df_max.index.values

plt.plot(df_max, '-o',df_min,'-o')
plt.fill_between(x,df_min.values.flatten(),df_max.values.flatten(), color='grey',alpha='0.5')

enter image description here