0
p = ggplot(cases, aes(x="Specimen date", y="Daily lab-confirmed cases", group = 1)) + geom_point() + geom_line() + labs(title = "Daily COVID-19 Cases")
p.save(filename = date_today, height=5, width=15, units = 'in', dpi=1000)

这是我当前的代码,用于从包含英格兰 COVID-19 病例的 DataFrame 中绘制图表,然后将其保存。我正在尝试添加类似于 Worldometer 图表的趋势线(如下所示)。

我还不能发布图片,所以我将在此处提供示例。

这就是我的图表目前的样子。

我正在努力实现“3 天移动平均线”“7 天移动平均线”

4

1 回答 1

0

请参阅stat_smooth,您可以使用移动平均线进行平滑处理。

例如,您最终可能会添加如下代码

+ stat_smooth(method='mavg', method_args={'window': 3}, color='cyan')
+ stat_smooth(method='mavg', method_args={'window': 7}, color='blue')

但这不会给你一个传说,因为移动平均值不是数据框中的变量(具有相应的值),即给定你想要绘制的数据并不整洁。因此,如果您想要一个图例,则必须计算移动平均值,创建一个整洁的数据框并绘制整齐的计算平均值。

如何?使用pandas.melt例如

# Compute moving averages
cases['mavg_3'] = cases['Daily lab-confirmed cases'].rolling(window=3).mean()
cases['mavg_7'] = cases['Daily lab-confirmed cases'].rolling(window=7).mean()

# Convert data Long/tidy format
cases_long = cases.melt(
    id_vars=['Specimen date', 'Daily lab-confirmed cases'],
    value_vars=['mavg_3', 'mavg_7'],
    var_name='mavg_type',
    value_name='mavg_value'
)

# Plot tidy data
(ggplot(cases_long, aes(x="Specimen date", y="Daily lab-confirmed cases"))
 + geom_point()
 + geom_line(aes(y='mavg_value', color='mavg_type'), na_rm=True)
)
于 2020-07-23T18:50:46.237 回答