2013-03-07 1 views
2

다음과 같은 간단한 데이터가 있습니다. 나는 "V"대 D1, D2, D3 값을 나란히 나란히 배치하고 누적 합계, CS1, CS2, CS3을 선으로 그리고 다른 Y 축척으로 플롯하고자합니다. First Figure에 나와있는 바와 같이 나란히 배치 된 막대 그래프를 그리는 것이 상대적으로 쉽지만 CS1-CS3 컬럼의 라인 플롯을 추가하는 것은 어렵습니다. 마지막 줄거리다른 Y 축에서 barplot에 행 추가 R

V D1 D2 D3 CS1 CS2 CS3 
10 2038 1806 1643 72.81171847 64.52304394 58.69953555 
20 550 709 757 92.46159343 89.85351911 85.7449089 
30 142 192 271 97.53483387 96.71311183 95.42693819 
40 45 61 80 99.14255091 98.89246159 98.28510182 
50 12 20 30 99.57127546 99.6070025 99.35691318 
60 5 6 10 99.74991068 99.82136477 99.71418364 
70 2 2 3 99.82136477 99.89281886 99.82136477 
80 4 1 2 99.96427295 99.92854591 99.89281886 
90 1 0 1 100.0000000 99.92854591 99.92854591 
100 0 1 0 100.0000000 99.96427295 99.92854591 

답변

6

먼저 당신의 도움을 Second Figure 감사합니다 같이 보일 것입니다, 당신은 barplot 플롯 및 객체로 저장해야합니다. 이 객체에는 막대의 x 좌표가 포함됩니다. 최대 값이 39.5이므로 xlim=c(0,40)을 설정합니다.

mp<-barplot(as.matrix(t(df[,2:4])),beside=TRUE,xlim=c(0,40),ann=FALSE) 
mp 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 1.5 5.5 9.5 13.5 17.5 21.5 25.5 29.5 33.5 37.5 
[2,] 2.5 6.5 10.5 14.5 18.5 22.5 26.5 30.5 34.5 38.5 
[3,] 3.5 7.5 11.5 15.5 19.5 23.5 27.5 31.5 35.5 39.5 

새 플롯을 추가하려면 par(new=TRUE)을 사용하십시오. 그런 다음 첫 번째 줄에는 plot()을 추가하고 다른 줄에는 lines()을 추가하십시오. 새 플롯의 x 값은 두 번째 줄 mp 객체 (중간 막대)를 사용했습니다. 기능 axis()은 축 틱을 설정하는 데 사용됩니다.

par(new=TRUE) 
plot(mp[2,],df$CS1,xlim=c(0,40),type="l",col="red",axes=FALSE,ylim=c(0,100),ann=FALSE) 
lines(mp[2,],df$CS2,col="blue") 
lines(mp[2,],df$CS3,col="green") 
axis(1,at=mp[2,],labels=df$V) 
axis(4,at=seq(0,100,10)) 
box() 

enter image description here

+0

대단히 감사합니다. –

1

TeachingDemos 패키지의 updateusr 기능을 사용하면 par(new=TRUE)과 함께 잠재적 인 문제에 의존 할 필요없이 기존 플롯의 좌표 시스템을 변경할 수 있습니다.

또 다른 옵션으로 plotrix 패키지에서 twoord.plot 함수를 볼 수도 있습니다.

동일한 플롯에 2 개의 좌표계가있는 경우 때때로 혼동을 야기 할 수 있으므로 두 개의 정렬 된 플롯을 세로로 쌓아서 겹치지 않고 스케일이 완전히 독립적이므로 상단 플롯을 더 짧게 만들 수 있습니다. layout 함수는이 배열을 도울 수 있습니다.

+0

감사합니다. 그렉, 내가 언급 한 방법에 대한 코드가 포함 된 게시물을 보았습니다. 다시 그들을 들여다 볼 것입니다. –

관련 문제