使用子图和groupby绘制多个y值

时间:2020-03-23 14:02:52

标签: pandas matplotlib pandas-groupby subplot

我有一个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的{​​{1}}列来针对confirmed case绘制Date。将它们绘制为(5,2)个子图

到目前为止,我还没有做到:

xaxis

到目前为止,所发生的是一个空的5x2子图,下面单独显示了每个图形。为什么会这样?

也只是一个小问题,但想澄清一下。在我的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() 函数中,为什么最后一个分组的国家仅显示在标题中?例如,对于该图,我有10个国家/地区分组在一起,但标题.plot()在每个图表中都显示。

看了一些SO帖子,并结合了一些答案来尝试解决我的问题,但我似乎是在盘旋。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

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

相关问题