【发布时间】:2015-10-31 18:41:32
【问题描述】:
我在从 ggplot 中提取路径时遇到了问题,并且遇到了错误。
下面给出的图像解释了我正在寻找的结果:(在图像编辑器中完成以进行解释)
假设情节 1 是我的原始情节。我正在寻找的是将第一点作为“F”点并从该点出发 24 小时。
Des %>%
mutate(nf = cumsum(ACT=="F")) %>% # build F-to-F groups
group_by(nf) %>%
mutate(first24h = as.numeric((DateTime-min(DateTime)) < (24*3600))) %>% # find the first 24h of each F-group
ggplot(aes(x=Loq, y=Las)) +
geom_path(aes(colour=first24h)) + scale_size(range = c(1, 2))+ geom_point()
Library(zoo)
full.time = seq(Des$DateTime[1], tail(Des$DateTime, 1), by=600) # new timeline with point at every 10 min
d.zoo = zoo(Des[,2:3], Des$DateTime) # convert to zoo object
d.full = as.data.frame(na.approx(d.zoo, xout=full.time)) # interpolate; result is also a zoo object
d.full$DateTime = as.POSIXct(rownames(d.full))
当我使用na.approx 进行插值时,它会给我错误??否则不会。
在 approx(x[!na], y[!na], xout, ...) 中出现错误: 需要至少两个非 NA 值进行插值 另外:警告信息: 在 xy.coords(x, y) 中:强制引入的 NAs
这两个data.frames 结合在一起。每个 F-F 截面都绘制在单独的图中,仅显示 F 点后不超过 24 小时的点
library(dplyr)
library(ggplot)
Des %>%
select(ACT, DateTime) %>%
right_join(d.full, by="DateTime") %>%
mutate(ACT = ifelse(is.na(ACT),"",ACT)) %>%
mutate(nf = cumsum(ACT=="F")) %>%
group_by(nf) %>%
mutate(first24h = (DateTime-min(DateTime)) < (24*3600)) %>%
filter(first24h == TRUE) %>%
filter(first24h == 1) %>%
ggplot(Des, aes(x=Loq, y=Las,colour=ACT)) +
geom_path() + facet_wrap(~ nf)
错误
ggplot.data.frame(., Des, aes(x = Loq, y = Las, color = ACT)) 中的错误: 应该使用 aes 或 aes_string 创建映射
这是我的Des 格式:
ID Las Loq ACT Time Date
1 12 13 R 23:20 1-1-01
1 13 12 F 23:40 1-1-01
1 13 11 F 00:00 2-1-01
1 15 10 R 00:20 2-1-01
1 12 06 W 00:40 2-1-01
1 11 09 F 01:00 2-1-01
1 12 10 R 01:20 2-1-01
so on...
【问题讨论】:
-
尝试将
Data排除在您对ggplot的呼叫之外。由于您使用的是管道,因此假定 data 参数并且您的第一个参数应该是aes。或者您可以在ggplot之前删除管道运算符。 -
@Benjamin 你能把命令粘贴到这里吗?我最初尝试取出数据,然后它显示错误:
Loq not found -
尝试用
.替换Data -
@Jaap
Error in inherits(mapping, "uneval") : object 'Des.' not found -
您能否将
dput(Des)或dput(Des[sample(nrow(Des), 20),])的输出粘贴到您的问题中?