Размеры аргументов несовместимы на линейном графике matplotlib - PullRequest
0 голосов
/ 02 января 2019

Пытаюсь заштриховать область между двумя линейными графиками, но получаю следующую ошибку

'Размеры аргумента несовместимы'

Я пытался посмотреть на подобные вопросы, но не могупохоже, что решение, которое работает в моем случае.

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()

Ссылка на базу данных, на которую я ссылаюсь: База данных

1 Ответ

0 голосов
/ 02 января 2019

Были две проблемы в вашем коде:

  • Ваш x был в основном целым числом, имеющим длину 0, тогда как вам нужно было передать массив значений, который соответствует диапазону x-scale (годыв вашем случае), который вы хотите заполнить.
  • Ваши df_min и df_max были DataFrames, тогда как вы должны были передать значения y, соответствующие df_min и df_max.Доступ к ним можно получить с помощью df_min.values и df_max.values.Тем не менее, это массив или массивы.Затем вам нужно flatten, чтобы получить массив 1d, чтобы использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...