Как построить многострочный график (график спагетти)? При попытке получить неверный аргумент RGBA: 2000? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть нижний фрейм данных so5b (не полный).

Фрейм данных имеет значения SO2 в месяц с 2000 по 2015 гг.

    year    month   so2
1   2000    11  17.3
2   2000    12  14.488888888888892
3   2001    1   14.377777777777778
4   2001    2   17.555555555555557
5   2001    3   13.955555555555556
6   2001    4   12.299999999999999
7   2001    5   11.0
8   2001    6   11.81111111111111
9   2001    7   10.525
10  2001    8   11.512500000000003
11  2001    9   11.212499999999999
12  2001    10  12.1625
13  2001    11  14.2125
14  2001    12  13.4875

Я хочу построить график с несколькими линиями для - месячного тренда значений so2 по месяцам - для каждого года. т.е. вывод должен быть как ниже

Required output chart

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

so5b.info()
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for key, grp in so5b.groupby(['year']):
    ax = grp.plot(ax=ax, kind='line', x='month', y='so2', c=key, label=key)
    plt.show()

Когда я выполняю вышеупомянутое, я получаю ошибку ниже

ValueError: Invalid RGBA argument: 2000

Также я не уверен, стоит ли мне заниматься группой по годам, то есть so5b.groupby (['year']), поскольку данные упорядочены по месяцам в год.

Я ссылался на несколько ссылок, как показано ниже, но, похоже, это не решило мою проблему

ValueError: Неверный аргумент RGBA: что является причиной этой ошибки?

Помощь оценена. ТИА

1 Ответ

2 голосов
/ 17 мая 2019

Вы можете сбросить c=key в команде plot. Вот откуда возникает ошибка, как для key=2000, plt не понимает цветовой код 2000. Итак:

fig, ax = plt.subplots(figsize=(10,6))
for key, grp in so5b.groupby('year'):
    ax = grp.plot(ax=ax, kind='line', x='month', y='so2', label=key)
plt.show()

дает вам:

enter image description here

Или вы можете использовать seaborn:

fig, ax = plt.subplots(figsize=(10,6))
sns.lineplot(x='month', y='so2', hue='year', data=so5b)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...