[英]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.