首页 > 解决方案 > ggplot中的时间序列差异

问题描述

我正在尝试用 ggplot 绘制时间序列的(第一个)差异。由于差异(根据定义)包含比数据少一个元素,我(可以预见地)收到错误消息:“错误:美学必须是长度 1 或与数据相同”。

我通过将我的 y 美学定义为c(NA, diff(data))而不是 just 来解决这个问题diff(data),这很有效。但是,这感觉像是一个笨拙的解决方法,并且仅在它给我带来麻烦的情况下才有效,例如当我尝试处理多个情节时。(此外,如果需要更高阶的差异或更多滞后,则需要继续添加 NA)。

有人知道更强大的解决方案吗?

最终的问题是: 我想要的(这是使用拼凑而成的::) 我使用刻面得到的(注意:如果我将 NA 放在最后,则第三张图表将变为正确)

标签: rggplot2time-seriesdifference

解决方案


虽然将 NA 添加到差分向量并不笨拙,但在 ggplot 美学中这样做是。比较以下两段代码:

ggplot(data = data.long, aes(x = date, y = c(NA, count %>% diff()))) + 
  geom_point() 

data.long %>%
  mutate(diff_count = c(NA, diff(count))) %>%
  ggplot(aes(x = date, y = diff_count)) +
    geom_point()

它们都会给出相同的图表,但第二个代码是首选方法,因为用于绘图的数据(差异计数)是在发送到 ggplot 之前计算的,并且更易于阅读和修改。换句话说,先做数据管理,再可视化数据。正如您所说,使用第一种方法可能会在以后给您带来麻烦,例如进行更复杂的图形绘制,例如刻面。


推荐阅读