Совокупный сюжет в 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)

но это для конкретного вектора dat1, который мне нужно взять из массива данных (cumul.dat).

Спасибо


person Panichi Pattumeros PapaCastoro    schedule 04.05.2014    source источник
comment
У вас есть конкретные векторы в A[,1], A[,2], ....   -  person Rubens    schedule 04.05.2014


Ответы (3)


Я не мог уследить за вашим вопросом, так что это выстрел в темноте, основанный на ключевых словах, которые я получил:

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")
person Tyler Rinker    schedule 04.05.2014
comment
Да, этот пример правильный, но мне нужно использовать метод векторов, например: m1 = A[,1] и m2 = A[,2], чем сделать очень хороший анализ Вас или @MrFlick - person Panichi Pattumeros PapaCastoro; 04.05.2014

Я не был вполне уверен, когда происходили события и каковы были наблюдения. Я предполагаю, что события только в 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)

Что производит

введите здесь описание изображения

person MrFlick    schedule 04.05.2014

С графикой 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)
person jbaums    schedule 04.05.2014