gpt4 book ai didi

r - 更改 ggplot 中时间序列间隙的线型

转载 作者:行者123 更新时间:2023-12-01 13:50:22 24 4
gpt4 key购买 nike

我在不规则的间隔时间序列中测量水质(通常每个月测量,但不是每个月的同一天)。我用下面的代码在惊人的 ggplot 中绘制了这些,用一条线连接所有的测量。

然而,也存在一些差距,即几个月没有进行测量。我想用另一种线型或颜色绘制这些点之间的线(例如,如果差距大于 60 天,则使用虚线和灰色)。我需要为此拆分我的数据吗?我该如何处理?

library(ggplot2)
library(lubridate)

xdate <- as.Date(c(seq.POSIXt(ymd("2005-01-01"), ymd("2007-03-04"), by = "30 days"),
seq.POSIXt(ymd("2007-07-03"), ymd("2007-12-31"), by = "28 days"),
seq.POSIXt(ymd("2008-05-15"), ymd("2010-10-10"), by = "25 days"),
seq.POSIXt(ymd("2012-01-01"), ymd("2014-12-31"), by = "31 days")))

set.seed(321)
df <- data.frame(date = rep(xdate,3), par=rep(c("Cl","PO4","NO3")), y=rnorm(318,1,0.2))

ggplot(df, aes(x=date, y=y)) +
geom_point(size=2) +
geom_line() +
facet_wrap(~par, nrow=3)

enter image description here

最佳答案

这应该让你接近,

library(dplyr)
df <- df %>% group_by(par) %>%
arrange(date) %>%
mutate(gap = cumsum(c(0, diff(date) > 60)))
ggplot(df, aes(x=date, y=y, colour=factor(gap))) +
geom_point(size=2) +
geom_line() +
facet_wrap(~par, nrow=3)

摆弄每个组的 id 和起点/终点应该能够将变量映射到线型。

enter image description here

关于r - 更改 ggplot 中时间序列间隙的线型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com