Построение с несколькими значениями y с подплотом и групповым - PullRequest
0 голосов
/ 23 марта 2020

У меня есть df. См. Ниже заголовок:

Country         Date     suspected case    confirmed cases   suspected deaths   confirmed deaths   

0   Guinea   2014-08-29       25.0            141.0              482.0              648.0
1   Nigeria  2014-08-29       3.0             1.0                15.0               19.0
2   Liberia  2014-08-29       382.0           674.0              322.0              1378.0

Используя df.groupby('Country'), я хочу построить suspected case против confirmed case, используя столбец Date для xaxis. Построение этих графиков как (5, 2) субплотов

То, что я сделал до сих пор, еще не совсем получилось:

fig, ax = plt.subplots(2, 5, sharey=True)
df.groupby('Country').plot(x='Date', y=['suspected cases', 'confirmed cases'], title=f'Suspected vs. Confirmed cases {country}')
plt.show()

То, что произошло до сих пор, это то, что есть пустой 5x2 Подплот и ниже отображает каждый график в отдельности. Почему это так?

Также незначительная проблема, но хотелось бы получить разъяснения. Почему в моей функции .plot() последняя сгруппированная страна отображается только в заголовке? Например, у меня есть 10 стран, сгруппированных для этого графика, но заголовок Suspected vs. Confirmed cases USA показывает для каждого графика.

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

1 Ответ

1 голос
/ 23 марта 2020

Вы можете сделать:

fig, ax = plt.subplots(2, 5, sharey=True)
for (c,d), a in zip(df.groupby('Country'), ax.ravel()):
    d.plot(x='Date', 
           y=['suspected cases', 'confirmed cases'], 
           title=f'Suspected vs. Confirmed cases {c}', 
           ax=a, subplots=False)

Вывод:

enter image description here

...