ОШИБКА: «fill_between () отсутствует 1 обязательный позиционный аргумент: 'y1'» при использовании fill_between в линейном графике с заливкой области - PullRequest
1 голос
/ 12 июля 2020

Я использовал agg, чтобы найти среднее и минимальное значения, сгруппированные по возрасту. Затем попытался построить линейный график с заполненной областью.

grpby = df6.groupby('age')
mean_values = grpby.agg({'hoursperweek':np.mean})
min_values = grpby.agg({'hoursperweek':np.min})


from matplotlib import pyplot as plt
plt.plot(mean_values,label = 'mean')
plt.plot(min_values,label = 'min',linestyle = '--')
plt.fill_between(mean_values,alpha = 0.25)
plt.legend()
plt.title('Mean and min')
plt.xlabel('ages')
plt.ylabel('hrs per week')
plt.show()

Вывод моих средних значений:

     hoursperweek
age              
31      42.877252
32      42.878019
33      42.965714
34      42.937923
35      43.908676
36      43.257238
37      43.706294
...
...

Я получаю следующую ошибку:

    plt.fill_between(mean_values,alpha = 0.25)
TypeError: fill_between() missing 1 required positional argument: 'y1'

Как сделать решить это?

1 Ответ

0 голосов
/ 12 июля 2020

Как plt.fill_between() документация сообщает, эта функция требует как минимум двух параметров:

xarray (длина N) Координаты x узлов, определяющих кривые.

y1array (длина N) или скаляр Координаты y узлов, определяющих первую кривую.

Область, которую вы хотите заполнить, определяется двумя функциями f1 и f2, вам необходимо передать plt.fill_between():

  1. массив x-координат точек f1
  2. массив y-координат точек f1
  3. (опционально) массив координаты y точек f2. Если вы не укажете f2, plt.fill_between() автоматически будет использовать ось x вместо него.

В вашем коде

plt.fill_between(mean_values,alpha = 0.25)

вы указываете только mean_values, который matplotlib интерпретирует как xarray, поэтому он требует от вас y1, как сообщает об ошибке. Отметьте эти ответы в качестве справки:

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