2012-02-27 2 views
5

lattice 또는 Dotplot()을 사용하여 Hmisc을 사용하여 그립니다. 나는 기본 매개 변수를 사용할 때, 나는 작은 수직 엔딩점 막대에서 오차 막대 줄의 세로 끝 부분을 그립니다.

--o--

없이 오차 막대를 플롯 할 수 있습니다하지만 난

을 좀하고 싶습니다 | - o-- |

은 내가

를 얻을 수 있습니다 알고 | --o-- |

내가 latticeExtra에서 plotrix 또는 segplot()에서 centipede.plot()를 사용하지만, 그 솔루션은 Dotplot()로 나에게 그런 좋은 컨디셔닝 옵션을 제공하지 않습니다. 나는 등 오류 바 선 색상, 폭을 변경하기위한 잘 작동 plot.linepar.settings와 재생하려고했지만, 지금까지 나는 수직 엔딩을 추가에 실패 봤는데 :

require(Hmisc) 
mean = c(1:5) 
lo = mean-0.2 
up = mean+0.2 
d = data.frame (name = c("a","b","c","d","e"), mean, lo, up) 
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1, 
     par.settings = list(plot.line=list(col=1), 
         layout.heights=list(bottom.padding=20,top.padding=20))) 

enter image description here

제발, 내게 ggplot2를 사용하는 해결책을주지 말아라.

+0

출발점, 즉'panel.bwplot'을'bwplot'를 사용하여 패널을 수정할 수 있습니다. – Andrie

+0

다음 스레드가 유용 할 수 있습니다. http://r.789695.n4.nabble.com/dotplots-with-error-bars-td4382474.html http://tolstoy.newcastle.edu.au/R/e2/help/06/10/2791.html –

답변

6

Dotplot() 대신에 barchart()으로 나는 과거와 같은 필요를 가지고 있었다.

내 솔루션은 다음과 같은 사용자 지정 패널 기능을 만드는 것입니다. (1) 원래 패널 기능을 먼저 실행합니다. 그리고 나서 (2)는 panel.arrows()을 사용하여 오차 막대를 추가합니다 (머리의 모서리가 샤프트와 90도 각도를 이루는 두 개의 화살표가 사용됨).

여기에 그 Dotplot()과 같이 할 수있는 작업은 다음과 같습니다

# Create the customized panel function 
mypanel.Dotplot <- function(x, y, ...) { 
    panel.Dotplot(x,y,...) 
     tips <- attr(x, "other") 
     panel.arrows(x0 = tips[,1], y0 = y, 
        x1 = tips[,2], y1 = y, 
        length = 0.15, unit = "native", 
        angle = 90, code = 3) 
} 

# Use almost the same call as before, replacing the default panel function 
# with your customized function. 
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1, 
     panel = mypanel.Dotplot, 
     par.settings = list(plot.line=list(col=1), 
         layout.heights=list(bottom.padding=20,top.padding=20))) 

enter image description here

+0

좋은 하나! 나는 그 패널 기능들이 마술을 할 수 있다고 생각했지만, 격자 수동은 간단하지 않고 매개 변수를 변경하기 위해 취할 수있는 많은 접근법이있다. 힘내 친구 야! –

+0

흠 이제 두 가지 조건을 더 적용 할 때 작동하지 않기 때문에 문제가 있습니다. 또 다른 두 조건을 추가하여보십시오 :'Dotplot (name ~ Cbind (mean, lo, up) | condX * condY, ...)'. 어떤 아이디어? –

+0

@ GeekOnAcid - 지금 시간이 없습니다. 필자가 제안하는 것은 커스터마이징 된 패널 함수 (첫 번째 라인은 할 것입니다) 안에'browser()'라고 쓰는 라인을 넣는 것입니다. 그런 다음 패널 함수가 호출되면 실행을 중단 할 것이고, 예를 들어,'tips <- attr (x, "other")'가 여전히 정확한 데이터를 추출 하는지를보기 위해 주위를 훑어 볼 수 있습니다. . ('|'를 통해) 컨디셔닝하기보다는'groups ='를 사용했다면 전체 패널을 다룰 필요가 있다고 말할 수 있습니다.superpose()'murass, 그러나 나는 그것이 아마도 여기의 문제가 아니라고 믿는다. –