7

我有一组 UNIX 时间戳和 URI,我正在尝试绘制每个 URI 的请求的累积计数。我设法使用一个虚拟列一次为一个 URI 做到这一点:

x.df$count <- apply(x.df,1,function(row) 1) # Create a dummy column for cumsum
x.df <- x.df[order(x.df$time, decreasing=FALSE),] # Sort
ggplot(x.df, aes(x=time, y=cumsum(count))) + geom_line()

但是,在我的情况下,这将产生大约 30 个图。

ggplot2 确实允许您将多条线绘制成一个图(我从这里复制了这段代码):

ggplot(data=test_data_long, aes(x=date, y=value, colour=variable)) +
    geom_line()

问题是,这种方式cumsum()会一直依赖。

有人有想法吗?

4

1 回答 1

9

这是一个测试数据,它首先使用plyr'stransform来计算累积和,然后使用该数据来绘制ggplot2

set.seed(45)
DF <- data.frame(grp = factor(rep(1:5, each=10)), x=rep(1:10, 5))
DF <- transform(DF, y=runif(nrow(DF)))

# use plyr to calculate cumsum per group of x
require(plyr)
DF.t <- ddply(DF, .(grp), transform, cy = cumsum(y))

# plot
require(ggplot2)
ggplot(DF.t, aes(x=x, y=cy, colour=grp, group=grp)) + geom_line()

在此处输入图像描述

于 2013-04-02T15:54:07.560 回答