2013-02-08 2 views
3

데이터가 요인별로 그룹화 된 상자 그림을 그려야합니다. 또한 각 상자의 관측 수를 나타 내기 위해 각 상자의 값을 alpha으로 설정하고 싶습니다. 주어진 요인에 대한 관측치가 많을수록 alpha가 높습니다.geom_box의 알파 채우기를 계수에서 관찰 수로 설정하는 방법

library(ggplot2) 
ggplot(mpg, aes(x=factor(class), y=displ)) + 
    geom_boxplot(aes(fill="red", alpha=10)) + 
    scale_fill_manual(values=c("red"="red"),guide="none") + 
    scale_alpha(range=c(0,1), guide="none") 

Example box plots http://aws.drewconway.com.s3.amazonaws.com/dev/img/box_plots.png

class 대한 관찰의 수를 산출하는 간단한, plyr를 사용 : 플롯 도면 예로서 mpg 데이터를 사용

...

는 간단 :

ddply(mpg, .(class), nrow) 
     class V1 
1 2seater 5 
2 compact 47 
3 midsize 41 
4 minivan 11 
5  pickup 33 
6 subcompact 35 
7  suv 62 

ggplot2 내부에서 할 수있는 영리한 방법이있을 것이라고 확신하지만 모든 아이디어를 다 써 버렸습니다.

감사합니다. 당신이 aesthetic (aes) 밖으로 alpha를 당길 경우에는 다음과 같이

+0

일반적으로 질문에 대한 대답은 "ggplot을 사용하기 전에 * 데이터를 형성하십시오."라는 결론을 얻습니다. 숫자를 미리 계산하여 데이터의 일부로 포함 시키면 (즉, 'freq'열에) 박스 플롯에 대해 미적 'aes (alpha = freq)'를 사용할 수 있습니다. – Dinre

+0

그래, 내가 모르는 ggplot2 마법이 있기를 바랬다. – DrewConway

답변

4

는, 당신은 직접 각 classlength에 따라 alpha 가치를 제공 할 수

ggplot(mpg, aes(x=factor(class), y=displ)) + 
     geom_boxplot(aes(fill="red"), 
      alpha = table(mpg$class)/max(table(mpg$class))) + 
       scale_fill_manual(values=c("red"="red"), guide = "none") 

당신이 얻을 :

ggplot2_alpha

관련 문제