2014-01-31 4 views
0

루프가있는 단일 플롯에서 열 쌍을 플로팅 할 수 있습니까? 예를 들어 10 열 (x1, x2 .. x10)의 시계열 데이터 프레임이있는 경우 5 개의 플롯을 만듭니다. 첫 번째 플롯은 x1과 x2를 표시하고 두 번째 플롯은 x3과 x4를 표시합니다. 에.R : 데이터 프레임의 열 쌍 루프 반복

모든 플롯팅 방법이 유용합니다 (zoo, lattice, ggplot2).

나는 하나의 변수를 음모 루프를 만들기에 붙어있어 :

set.seed(1) 

x<- data.frame(replicate(10,rnorm(10, mean = 0, sd = 1))) 
cols <- seq(1,10) 

library(zoo) 
z <- read.zoo(x) 

for (i in cols) { 
plot(z[,i], screen = 1) 
} 

사전에 감사합니다.

+0

색인에 대해 또는 서로에 대해 두 열을 플롯하려면 어떻게해야합니까? –

답변

0

이 마음에 드십니까? 비록 당신이 그것을 어떻게 계획하고 싶은지 나는 명확하지 않지만.

par(mfrow=c(1,5)) 
for (i in seq(1,10,by=2)){ 

    plot(x[,i],x[,i+1]) 
} 
1

어떻게 ggplot2reshape2이 약 :

require(reshape2) 
require(ggplot2) 
m<-melt(matrix(z,10)) 
m$facet<-cut(m$Var2,c(0,2,4,6,8,10)) 
ggplot(m)+geom_line(aes(x=Var1,y=value,group=Var2,color=factor(Var2)))+facet_wrap(~ facet) 

enter image description here

+0

코드에서 z가 9 열만 있기 때문에 9 개의 플롯이 있습니다. – Troy

1

그것은이 col 인수가 홀수 시리즈는되도록 지정과 같은 루프없이 한 줄로 수행 할 수 있습니다 검정색과 심지어는 빨간색입니다. 문제의 z에는 9 개의 열이 있습니다 (x의 첫 번째 열은 시간 인덱스이므로). 그래서 의도 한 바대로 10 열 z을 사용했습니다.

library(zoo) 
# test data 
set.seed(123); z <- zoo(matrix(rnorm(250), 25)); colnames(z) <- make.names(1:10) 

plot(z, screen = rep(colnames(z)[c(TRUE, FALSE)], each = 2), col = 1:2) 

출력은 다음과 같습니다. 단일 열을 생성하려면 nc=1 인수를 추가하거나 격자 플롯을 생성하려면 plotxyplot으로 바꿉니다.

enter image description here

ADDED : 격자 용액.

관련 문제