2012-12-13 3 views
3

나는 beanplot 또는 violin 플롯 유사한 플롯을 만들고 싶어하지만, 대신에 대칭 모양, 나는 중심선의 다른 측면에 두 개의 서로 다른 분포를 플롯합니다. 이 기사의 그림 4와 같은 것 [pdf] http://www.jstatsoft.org/v28/c01/paper.R에 그리드 그래픽을 사용하여 히스토그램을 플로팅하는 방법은 무엇입니까?

나는 Rgrid 그래픽 엔진을 사용하고 싶습니다. 모든 포인터가 유용 할 것입니다. lattice 패키지와 패키지의 histogram 기능을 살펴 봤지만 그게 내가하고 싶은 것이 아닙니다.

어떤 도움/포인터 감사합니다.

+0

@BenBarnes의 6 페이지에 (6 페이지에 하나의 플롯이있다). 실제로 boxplot 대안입니다. – MattLBeck

+0

@Mattrition, Ooohh. 그것은 흥미로운 음모입니다. 아, 그림 4, 페이지 4가 아닙니다. – BenBarnes

+0

OP가 필요한 것이 확실하지 않습니다. 종이에서 볼 때 'beanplot'을 사용하여 그래픽을 생성 할 수 있으며 코드를 제공 할 수도 있습니다. – MattLBeck

답변

4

당신은 합리적으로 쉽게 사카의 격자 패키지의 기능, panel.violin에 아주 간단한 수정을 반 바이올린 플롯을 얻을 수 있습니다. 이 함수에는 "양면"밀도 플로팅에서 단면 양면 플로팅으로 변경하기 위해 호출 할 수있는호출 내에서 변경할 수있는 네 줄이 있습니다. 먼저 require(lattice)require(grid). 그런 다음 panel.violin을 입력하십시오. "수평"변경을 보여 드리겠습니다.

require(grid) 
panel.violin2 <- 
    # snipped all the arguments and processing 

     grid.polygon(x = c(dx.list[[i]]), 
    # Notice I removed: ... ,rev(dx.list[[i]]) 
       y = c(2*dy.list[[i]] ), default.units = "native", 
    # Removed: ... , -rev(dy.list[[i]]) 
       name = trellis.grobname(identifier, type = "panel", 
       group = group), gp = gpar(fill = col, col = border, 
       lty = lty, lwd = lwd, alpha = alpha)) 

else {...} 절의 해당 섹션에서 제거하십시오. 이제 도움말의 예제를 실행할 수 있습니다 (panel.violin)

bwplot(voice.part ~ height, singer, 
     panel = function(..., box.ratio) { 
      panel.violin2(..., col = "transparent", 
         varwidth = FALSE, box.ratio = box.ratio) 
      panel.bwplot(..., fill = NULL, box.ratio = .1) 
     }) 
당신이 다른 쪽의 밀도를 원한다면

enter image description here

, 당신이해야 할 것 모두가 dx.list을 제거 할 것 [[i]]와 dy.list [[i]]를 입력하고 rev(dx.list[[i]])-rev(dy.list[[i]])에 남겨 둡니다.

관련 문제