R中的累积图

时间:2014-05-04 18:52:59

标签: r plot statistics cumulative-sum

我尝试为我的数据的特定(例如第一个)列创建累积图(示例):

 1   3
 2   5
 4   9
 8  11
12  17
14  20
16  34
20  40

我希望将此图与另一个数据的另一个累积图(例如第二列)重叠,并将其保存为png或jpg图像。 不使用矢量实现"手工"和Cumulative Plot with Given X-Axis一样,因为如果我有一个非常大的数据集,我就无法做到这一点。

我尝试按照简单的命令:

A <- read.table("cumul.dat", header=TRUE)

读取文件,但现在我想要使用此文件的特定列来减少累积图。 命令是:

cdat1<-cumsum(dat1)

但这是我需要从数据数组(cumul.dat)获取的特定向量dat1

由于

3 个答案:

答案 0 :(得分:2)

我无法关注你的问题所以这是基于我所得到的关键词的黑暗答案:

m <- read.table(text=" 1   3
 2   5
 4   9
 8  11
12  17
14  20
16  34
20  40")

library(ggplot2)

m2 <- stack(m)
qplot(rep(1:nrow(m), 2), values, colour=ind, data=m2, geom="step")

enter image description here

编辑我觉得我喜欢这种方法:

library(ggplot2)
library(reshape2)

m$x <- seq_len(nrow(m))
m2 <- melt(m, id='x')
qplot(x, value, colour=variable, data=m2, geom="step")

答案 1 :(得分:1)

我不确定事件发生的时间和观察结果。我假设事件只是1,2,3,4,而列代表不同组的声音。如果是这样,使用莱迪思我会做

require(lattice)
A<-data.frame(dat1=c(1,2,4,8,12,14,16,20), dat2=c(3,5,9,11,17,20,34,40))
dd<-do.call(make.groups, lapply(A, function(x) {data.frame(x=seq_along(x), y=cumsum(x))}))
xyplot(y~x,dd, groups=which, type="s", auto.key=T)

哪个产生

enter image description here

答案 2 :(得分:1)

使用base图片,可以通过在type='s'电话中指定plot来完成此操作:

matplot(apply(A, 2, cumsum), type='s', xlab='x', ylab='y', las=1)

step plot

注意我在这里使用了matplot,但你也可以一次一个地绘制一个系列,第一个用plot绘制,第二个用pointslines

我们还可以添加一个图例,例如:

legend('topleft', c('Series 1', 'Series 2'), bty='n', lty=c(1, 3), col=1:2)