[英]Cumulative plot in R
我尝试为数据的特定列(例如第一列)绘制累积图(示例):
1 3
2 5
4 9
8 11
12 17
14 20
16 34
20 40
比我想将此图与另一个数据的另一个累积图(例如第二列)重叠,并将其另存为png或jpg图像。 如果没有像在具有给定X轴的累积图中那样“手动”使用矢量实现,因为如果我有一个非常大的数据集,我将无法做到这一点。
我尝试以下简单命令:
A <- read.table("cumul.dat", header=TRUE)
读取文件,但是现在我希望该文件的特定列的累积图向下。 该命令是:
cdat1<-cumsum(dat1)
但这是针对我需要从数据数组(cumul.dat)中获取的特定向量dat1
。
谢谢
我无法回答您的问题,因此这是我根据得到的关键词得出的黑暗答案:
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,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)
哪个产生
对于base
图形,可以通过在plot
调用中指定type='s'
来完成:
matplot(apply(A, 2, cumsum), type='s', xlab='x', ylab='y', las=1)
注意,我在这里使用了matplot
,但是您也可以一次绘制一个序列,第一个使用plot
,第二个使用points
或lines
plot
。
我们还可以添加图例,例如:
legend('topleft', c('Series 1', 'Series 2'), bty='n', lty=c(1, 3), col=1:2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.