2012-12-15 3 views
2

아래 스크립트가 실행되어 여기에 x-13 : 18 (여기서 데이터 참조)이라는 6 개의 데이터 열이있는 데이터 시리즈의 베이지안 변화 점 (bcp)이 표시됩니다 파일 2GB01.csv. 문제는 열 18의 출력 플롯 만 플롯된다는 것입니다. 하나의 그래픽 창 파티션에있는 각 열 데이터 세트의 6 개 그래프를 플롯하기 위해 스크립트를 수정해야합니다. 도움이 되었습니까?루프 작업에서 그래픽을 그림으로 그려야합니다.

데이터 파일 COL1 COL2 .... .... col13 col14 col15 col16 col17 col18 같은 것을 보인다. . . . . . . . . . . . . . . . . . . . . . . . 당신이 때마다

op <- par(mfrow=c(2,1),col.lab="black",col.main="black") 

호출하는 경우 아래 작성된

스크립트는

는 루프의 외부에 여기

data2<-read.csv("2GB01.csv", header=TRUE, row.names=1) 

    x <- 13:18 
    for(i in seq(along=x)){ 
     ond<-data2[,i] 
     bcp.1<-bcp(as.vector(ond)) 
    if (require("strucchange")) { 
    bp <- breakpoints(ond ~ 1, h = 2)$breakpoints 
    rho <- rep(0, length(ond)) 
    rho[bp] <- 1 
    b.num<-1 + c(0,cumsum(rho[1:(length(rho)-1)])) 
    bp.mean <- unlist(lapply(split(ond,b.num),mean)) 
    bp.ri <- rep(0,length(ond)) 


    for (i in 1:length(bp.ri)) bp.ri[i] <- bp.mean[b.num[i]] 
     xax<-seq(1960, 2010, length=51) 
     op <- par(mfrow=c(2,1),col.lab="black",col.main="black") 
     op2 <- par(mar=c(0,4,4,4.5),xaxt="n",yaxt="n", cex.axis=0.75,las=2) 
     plot(xax, ond, col="grey", pch=20, xlab="",ylab="", axes=T) 
     lines(xax, bcp.1$posterior.mean, lwd=2) 
     axis(4, yaxt="s") 
     mtext('Posterior mean', las=0, side=4, line=3.5) 
     lines(bp.ri, col="blue") 
     par(op2) 
     op3 <- par(mar=c(5,4,0,4.5), xaxt="s",yaxt="n", cex.axis=0.75,las=2) 
plot(xax, bcp.1$posterior.prob, xlab="Year", ylab="Posterior probability",  type="l", xlim=c(1960,2010), ylim=c(0,1),las=0) 
    for (i in 1:length(bp.ri)) abline(v=xax[bp[i]], col="blue") 
     axis(2, yaxt="s") 
     par(op3) 
     par(op) 


} else { 
    cat("strucchange is not loaded") 
}} 

답변

2

이동이 코드를 입력 ....입니다 매번 플롯 그리드를 설정합니다 (예 : 클리어).

mfrow=c(2,length(rp.ri))과 같은 작업을 수행해야합니다.

+0

나는 당신의 제안을 시도했지만 여전히 효과가 없습니다. "plot.new() 오류 : 그림 여백이 너무 큼"오류가 발생합니다. 줄거리를 줄이려고 시도했지만 여전히 같은 오류가 발생합니다. 스크립트를 실행하려면 R에서 "bcp"및 "strucchange"패키지를로드해야한다는 점을 잊어 버렸습니다. – Vincent

+0

아마도 거기에있는 다른 광기와 관련이있을 것입니다. 기본 사항, 즉'par()'호출,'for' 루프 그리고 루프의 반복마다 단지 하나의 plot 명령으로 시작하십시오. 그런 다음 원하는대로 다시 빌드하십시오. –

+0

감사합니다 아리, 당신 말이 맞아요. "op <- par (mfrow = c (2,1), col.lab ="black ", col.main ="black ")를 루프 바깥으로 옮겨야 만했습니다. mfrow를 mfcol로 대체하십시오 :) 그것은 바보 같았습니다. 건배 – Vincent