我希望在同一个地块上有多个“线”。多个数据点。
在我的示例中,我如何包含'xa'和'xb'数据点。
这就是我只有一组数据点,但我想要两个。如何修改此脚本。
library(ggplot2)
da <- c("2012-02-02 09:01:00", "2012-02-02 09:02:00", "2012-02-02 09:03:00")
db <- c(0.4, 0.6, 0.5)
xa <- c("2012-02-02 09:01:00", "2012-02-02 09:02:00", "2012-02-02 09:03:00")
xb <- c(0.3, 0.43, 0.7)
da2 <- as.POSIXct(da)
dfx <- data.frame(da2, db)
summary(dfx)
png('time_data_errs6b.png', width=640, height=480)
gg <- qplot(da2, db, colour='red')+
opts(title = 'Requests App')+xlab('Time')+ylab('Requests') +
geom_line()
print(gg)
dev.off()
答案 0 :(得分:5)
我会按时间变量制作两个data.frames
和merge
。
> df.a<-data.frame(time=da, value.a=db)
> df.b<-data.frame(time=xa, value.b=xb)
> df.mix<-merge(df.a, df.b, by='time')
> df.mix
time value.a value.b
1 2012-02-02 09:01:00 0.4 0.30
2 2012-02-02 09:02:00 0.6 0.43
3 2012-02-02 09:03:00 0.5 0.70
像你一样转换为POSIXct然后将其融合为长格式。
> df.mix$time<-as.POSIXct(df.mix$time)
> df.melt<-melt(df.mix, id.vars='time')
ggplot可以很好地处理长格式数据,因此通常我的目标是在绘制之前使用melt
和merge
将数据放入合适的结构中。
> ggplot(df.melt, aes(x=time, y=value, colour=variable)) + geom_path()
我还希望使用基础ggplot
而不是qplot
来表示我自己的可读性。但那是一个偏好的问题。
答案 1 :(得分:2)
这是一种更简单的方法,无需merge
或melt
数据。
df_a <- data.frame(time = da, value = db)
df_b <- data.frame(time = xa, value = xb)
ggplot(df_a, aes(x = as.POSIXct(time), y = value)) +
geom_line(col = 'red') +
geom_line(col = 'blue', data = df_b)