使用 subplot 和 groupby 绘制多个 y 值

Plotting with multiple y values with subplot and groupby

我有一个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'),我想使用 xaxisDate 列针对 confirmed case 绘制 suspected case。将它们绘制为 (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 帖子并结合了一些答案试图解决我的问题,但我似乎在兜圈子。

你可以这样做:

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)

输出: