Il problema centrale del PO sembra avere è che hanno i dati dalla coda molto-pesanti - e non credo che la maggior parte delle attuali risposte realmente affrontare questo problema a tutti , in modo da sto promuovendo il mio precedente commento ad una risposta.
Se volevi rimanere con i grafici a scatole, alcune opzioni sono elencate di seguito. Ho creato alcuni dati in R che mostrano il problema di base:
set.seed(seed=7513870)
x <- rcauchy(80)
boxplot(x,horizontal=TRUE,boxwex=.7)
La metà centrale dei dati è ridotta a una piccola striscia larga un paio di mm. Lo stesso problema riguarda la maggior parte degli altri suggerimenti, tra cui grafici QQ, grafici a strisce, grafici alveare / api scaldati e grafici per violino.
Ora alcune potenziali soluzioni:
1) trasformazione ,
Se i registri o le inversioni producono un diagramma a scatole leggibile, potrebbero essere un'ottima idea e la scala originale può ancora essere mostrata sull'asse.
Il grosso problema è che a volte non c'è trasformazione "intuitiva". C'è un problema più piccolo che mentre i quantili stessi si traducono abbastanza bene con le trasformazioni monotoniche, i recinti no; se hai semplicemente tracciato i dati trasformati (come ho fatto qui), i baffi avranno valori x diversi rispetto alla trama originale.
Qui ho usato un peccato inverso-iperbolico (asinh); è una specie di log nelle code e simile a lineare vicino allo zero, ma le persone generalmente non la trovano una trasformazione intuitiva, quindi in generale non consiglierei questa opzione a meno che una trasformazione abbastanza intuitiva come il log sia ovvia. Codice per quello:
xlab <- c(-60,-20,-10,-5,-2,-1,0,1,2,5,10,20,40)
boxplot(asinh(x),horizontal=TRUE,boxwex=.7,axes=FALSE,frame.plot=TRUE)
axis(1,at=asinh(xlab),labels=xlab)
2) interruzioni di scala - prendere valori anomali estremi e comprimerli in finestre strette a ciascuna estremità con una scala molto più compressa rispetto al centro. Consiglio vivamente un'interruzione completa su tutta la scala se lo fai.
opar <- par()
layout(matrix(1:3,nr=1,nc=3),heights=c(1,1,1),widths=c(1,6,1))
par(oma = c(5,4,0,0) + 0.1,mar = c(0,0,1,1) + 0.1)
stripchart(x[x< -4],pch=1,cex=1,xlim=c(-80,-5))
boxplot(x[abs(x)<4],horizontal=TRUE,ylim=c(-4,4),at=0,boxwex=.7,cex=1)
stripchart(x[x> 4],pch=1,cex=1,xlim=c(5,80))
par(opar)
3) rifilatura di valori anomali estremi (che normalmente non consiglierei senza indicarlo chiaramente, ma sembra la trama successiva, senza "<5" e "2>" alle due estremità), e
4) quelle che chiamerò "frecce" estreme - simili al taglio, ma con il conteggio dei valori ritagliati indicato ad ogni estremità
xout <- boxplot(x,range=3,horizontal=TRUE)$out
xin <- x[!(x %in% xout)]
noutl <- sum(xout<median(x))
nouth <- sum(xout>median(x))
boxplot(xin,horizontal=TRUE,ylim=c(min(xin)*1.15,max(xin)*1.15))
text(x=max(xin)*1.17,y=1,labels=paste0(as.character(nouth)," >"))
text(x=min(xin)*1.17,y=1,labels=paste0("< ",as.character(noutl)))