2012-02-28 6 views
5

Questa domanda è un seguito imprevisto da Draw vertical ending of error bar line in dotplot. Mentre la domanda citata è stata risolta con successo - c'è un avvertimento. Quando introduco più di tre condizioni per dotplot, non voglio disegnare i tick verticali | --o-- | alla fine delle barre di errore.Tick della barra degli errori | --o-- | non disegnare per più di tre condizioni in dotplot

Come suggerito da @Josh nei commenti, ho iniettato browser() nella prima riga di funzione che richiama l'aggiornamento panel.Dotplot per vedere cosa va storto, ma non è uscito con nulla che mi aiuti a risolverlo. Ecco un codice di esempio per quattro condizioni Dotplot() con la funzione panel.Dotplot aggiornata che non funziona. Essa funzionerà, se si diminuisce il numero di condizioni (risposta di controllo per la domanda citata sopra):

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

risposta

5

L'errore barre sono infatti in fase di rendering, ma non sono visibili a causa della loro molto breve lunghezza (± 0,2 unità). Aumentare l'errore di ± 1 risultati nel seguente (ho anche aumentato il length specificato in panel.arrows - vale a dire la lunghezza errore tappo bar - a 0,5):

lattice error bars

Se il vostro vero dei dati è così preciso relativo nell'intervallo di valori x, potresti prendere in considerazione punti più piccoli (quindi non sono inclini a oscurare le barre di errore) o un layout che esagera l'asse x. Ad esempio, il seguente utilizza l'errore originale di ± 0,2 unità, e il vostro tappo originale freccia length di 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

Ora ho la storia completa, Cheers @jbaums! Cleveland sarebbe orgogliosa di noi ;-) –