2017-10-09 12 views
1

ggridges 패키지 (ggplot2 기준)를 사용하여 joyplot을 만들려고합니다. 일반적인 개념은 조이 플롯이 크기가 조정 된 누적 밀도 플롯을 작성한다는 것입니다. 그러나, 나는 가중 밀도를 사용하여 이들 중 하나를 생성하는 것처럼 보이지 않습니다. Joyplot 생성시 밀도 계산에 샘플링 가중치 (가중 밀도)를 통합 할 수있는 방법이 있습니까?R : 가중 조평/릿지도/밀도 플롯?

다음은 패키지 설명서의 링크입니다. https://cran.r-project.org/web/packages/ggridges/ggridges.pdf ggplot을 기반으로하는 많은 패키지가 추가 미학을 수용 할 수 있지만이 유형의 기하 구조에 가중치를 추가하는 방법을 모르겠습니다.

또한 ggplot에서 가중치가 적용되지 않은 joyplot의 예입니다. 나는 이것을 체중에 따라 가중치가있는 가중치 플롯으로 변환하려고합니다. 그것은이 작업을 수행하는 방법과 같은

# Load package, set seed 
library(ggplot) 
set.seed(1) 

# Create an example dataset 
dat <- data.frame(group = c(rep("A",100), rep("B",100)), 
        pweight = runif(200), 
        val = runif(200)) 

# Create an example of an unweighted joyplot 
ggplot(dat, aes(x = val, y = group)) + geom_density_ridges(scale= 0.95) 
+0

샘플 입력 데이터로 [재현 가능한 예] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 제공하면 도움이 쉽습니다. – MrFlick

+0

재현 가능한 예제를 @MrFlick에 추가했습니다. – user3614648

답변

4

은 기본 stat_density_ridges보다는 stat_density을 사용하는 것입니다. 기본 stat_density_ridges 공동 밀도 모든 데이터 세트에서 추정을 만드는

참고 : 문서 당 당신은 연결. 이것은 패싯 플롯을 사용할 때 원하는 결과를 생성하지 않을 수 있습니다. 또는 stat = "density"stat_density을 사용하도록 설정할 수 있습니다. 이 경우 미적 매핑 height = ..density.. (예 참조)을 추가하려면 이 필요합니다.

다행히 (stat_density_ridges 달리) stat_density는 미적 weight를 이해하고 기본 density 호출에 전달합니다. 당신은 같은 끝낼 :

ggplot(dat, aes(x = val, y = group)) + 
    geom_density_ridges(aes(height=..density.., # Notice the additional 
          weight=pweight),  # aes mappings 
         scale= 0.95, 
         stat="density") # and use of stat_density 

..density.. 변수는 자동으로 stat_density에 의해 생성됩니다.

참고 : 그것은 당신이 stat_density를 사용할 때 X 축 범위는 약간 다르게 동작 나타납니다 :이 데이터 범위의 밀도 플롯을 손질하고 잘 생긴 꼬리를 삭제합니다. 수동으로 x 축을 확장하여이 문제를 쉽게 해결할 수 있지만 언급 할만한 가치가 있다고 생각했습니다.

+0

이것은 매우 도움이됩니다. 감사합니다! 예제에서 이것이 어떻게 작동하는지 보여줄 수 있습니까? – aeongrail