2013-02-20 5 views
2

동일한 평면에서 두 개의 막대 그래프를 오버레이하려고하지만 hist()에서 Probability = TRUE (상대 빈도) 옵션이 아래 코드에서 유효하지 않습니다. 두 샘플의 크기가 매우 다르므로 (길이 (cl1) = 9 및 길이 (cl2) = 339)이 스크립트로 각 빈도를 표시하므로 두 히스토그램 간의 차이를 vizualize 할 수 없습니다. 상대 빈도를 보여주는 동일한 bin 폭을 가진 두 개의 히스토그램을 어떻게 겹칠 수 있습니까?R로 히스토그램 그리기; y 축은 비율/확률로 주파수를 계속 변경합니다.

c1<-hist(dataList[["cl1"]],xlim=range(minx,maxx),breaks=seq(minx,maxx,pasx),col=rgb(1,0,0,1/4),main=paste(paramlab,"Group",groupnum,"cl1",sep=" "),xlab="",probability=TRUE) 
c2<-hist(dataList[["cl2"]],xlim=range(minx,maxx),breaks=seq(minx,maxx,pasx),col=rgb(0,0,1,1/4),main=paste(paramlab,"Group",groupnum,"cl2",sep=" "),xlab="",probability=TRUE) 
plot(c1, col=rgb(1,0,0,1/4), xlim=c(minx,maxx), main=paste(paramlab,"Group",groupnum,sep=" "),xlab="")# first histogram 
plot(c2, col=rgb(0,0,1,1/4), xlim=c(minx,maxx), add=T) 
cl1Col <- rgb(1,0,0,1/4) 
cl2Col <- rgb(0,0,1,1/4) 
legend('topright',c('Cl1','Cl2'), 
fill = c(cl1Col , cl2Col), bty = 'n', 
border = NA) 

미리 도움을 청하십시오!

+0

샘플 데이터가 도움이 될 것입니다. – russellpierce

+0

향후 문제를 재현하는 데 필요한 관련 개체를 dput()하십시오. – russellpierce

답변

6

클래스 히스토그램의 객체 (예 : c1)에서 plot을 호출하면 히스토그램의 S3 메서드가 호출됩니다. 즉, plot.histogram. graphics:::plot.histogram을 입력하고 ?plot.histogram에서 도움말을 볼 수 있으면이 기능의 코드를 볼 수 있습니다. 해당 기능에 대한 도움말 파일 상태 :

freq logical; TRUE이면, 히스토그램 그래픽은 주파수 표현 즉, x$counts을 나타냅니다. FALSE 인 경우 상대적인 주파수 (확률), 즉 x $ 밀도가 플롯됩니다. 균등 분할의 경우 기본값 인 이 true이고 그렇지 않은 경우 false입니다. 줄거리는 이전에 지정한 probability 또는 freq 인수를 사용하지 않는 히스토그램을 렌더링 할 때

그래서, 그 자체를 위해 그것을 알아 내려고 시도합니다. 그 이유는 c1 내부를 파헤 치면 플롯에 필요한 모든 데이터가 포함되지만 렌더링 방법을 지정하지 않기 때문입니다.

따라서 플롯 기능을 실행할 때 해결 방법은 freq=FALSE 인수를 반복하는 것입니다. 특히 plot.histogram에는 확률 옵션이 없으므로 freq=FALSE이 작동하는 반면 probability=TRUE은 작동하지 않습니다. 그래서, 플롯 코드는 다음과 같습니다이 모두 R 개발자들 측의 감독/특이한 결정 (또는 그 부족)처럼 보인다

plot(c1, col=rgb(1,0,0,1/4), xlim=c(minx,maxx), main=paste(paramlab,"Group",groupnum,sep=" "),xlab="",freq=FALSE)# first histogram 
plot(c2, col=rgb(0,0,1,1/4), xlim=c(minx,maxx), add=T, freq=FALSE) 

합니다. 그들의 신용에 적절히 문서화되어 있으며 "예상치 못한 행동"이 아닙니다 (물론 나는 그것을 기대하지 않았습니다). 그러한 기이함을 어디에서보고해야하는지에 대해 궁금합니다.

+0

좋아요! 그것은 완벽하게 작동합니다. 감사. – Lio

+0

@ 리오 : 듣기 좋습니다. 답변을 수락 된 것으로 표시 하시겠습니까? (체크 표시). – russellpierce

관련 문제