2012-02-28 9 views
5

To pytanie jest nieoczekiwaną kontynuacją od Draw vertical ending of error bar line in dotplot. Podczas gdy przytoczone pytanie zostało pomyślnie rozwiązane - jest pewne zastrzeżenie. Kiedy wprowadzam więcej niż trzy warunki do dotplot, nie chcę narysować pionowych tyknięć | --o-- | w końcówkach słupków błędów.Znaczniki paska błędu | --o-- | nie rysuj dla więcej niż trzech warunków w dotplot

Jak @Josh sugerowane w komentarzach, że wstrzykuje browser() do pierwszej linii funkcji, które przyciąga zaktualizowanej panel.Dotplot aby zobaczyć, co idzie źle, ale to nie wyjdzie ze wszystkiego, co pomaga mi go rozwiązać. Oto przykładowy kod dla czterech warunków Dotplot() ze zaktualizowaną funkcją panel.Dotplot, która nie działa. Będzie działać, jeśli zmniejszy liczbę warunków (sprawdź odpowiedź na pytanie, cytowany powyżej):

require(Hmisc) 
#Fake conditions 
mean = c(1:18) 
lo = mean-0.2 
up = mean+0.2 
name = c("a","b","c") 
cond1 = c("A","B","C") 
cond2 = c(rep("E1",9),rep("E2",9)) 
d = data.frame (name = rep(name,6), mean, lo, up, 
       cond1=rep(cond1,each=3,times=2), cond2) 
# 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.1, unit = "native", 
       angle = 90, code = 3) 
} 
#Draw Dotplot - `panel.Dotplot` doesn't change anything 
setTrellis() 
Dotplot(name ~ Cbind(mean,lo,up) | cond1 * cond2, data=d, ylab="", xlab="",col=1, 
     panel = mypanel.Dotplot) 

enter image description here

Odpowiedz

5

Błąd bary są w rzeczywistości są renderowane, ale nie są widoczne ze względu na ich bardzo krótki długość (± 0,2 jednostki). Zwiększenie błąd ± 1 wyniki w następujących (ja również wzrosła length określone w panel.arrows - czyli długość błąd bar cap - 0,5):

lattice error bars

Jeśli prawdą jest tak precyzyjne dane względne do zakresu wartości x, możesz rozważyć mniejsze punkty (aby nie były one tak podatne na zaciemnianie słupków błędów) lub układ, który wyolbrzymia oś X. Na przykład, co następuje wykorzystuje oryginalną błędem ± 0,2 jednostek, a oryginalna czapka strzałka length od 0,1:

Dotplot(name ~ Cbind(mean,lo,up) | cond1 * cond2, data=d, ylab="", xlab="", 
    col=1, panel = mypanel.Dotplot, pch=20, cex=0.4, layout=c(1, 6), strip=FALSE, 
    strip.left=strip.custom(par.strip.text=list(cex=0.75), bg=0, fg=0)) 

lattice precise error bars

+0

Teraz mam całą historię, Pozdrawiam @jbaums! Cleveland byłby z nas dumny ;-) –

Powiązane problemy