我尝试为我的数据的特定(例如第一个)列创建累积图(示例):
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
。
由于
答案 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")
编辑我觉得我喜欢这种方法:
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)
哪个产生
答案 2 :(得分:1)
使用base
图片,可以通过在type='s'
电话中指定plot
来完成此操作:
matplot(apply(A, 2, cumsum), type='s', xlab='x', ylab='y', las=1)
注意我在这里使用了matplot
,但你也可以一次一个地绘制一个系列,第一个用plot
绘制,第二个用points
或lines
我们还可以添加一个图例,例如:
legend('topleft', c('Series 1', 'Series 2'), bty='n', lty=c(1, 3), col=1:2)