El problema central de la OP parece tener es que tienen datos de cola muy pesadas - y no creo que la mayoría de los presentes respuestas realidad se ocupan de esa cuestión en absoluto , por lo que estoy promoviendo mi comentario anterior a una respuesta.
Si desea quedarse con boxplots, a continuación se enumeran algunas opciones. He creado algunos datos en R que muestran el problema básico:
set.seed(seed=7513870)
x <- rcauchy(80)
boxplot(x,horizontal=TRUE,boxwex=.7)
La mitad central de los datos se reduce a una pequeña tira de un par de mm de ancho. El mismo problema afecta a la mayoría de las otras sugerencias, incluidas las parcelas QQ, los gráficos de bandas, las parcelas de colmena / abejas y las parcelas de violín.
Ahora algunas soluciones potenciales:
1) transformación ,
Si los registros o inversas producen una gráfica de caja legible, pueden ser una muy buena idea, y la escala original todavía se puede mostrar en el eje.
El gran problema es que a veces no hay transformación 'intuitiva'. Hay un problema menor que, si bien los cuantiles se traducen con transformaciones monotónicas lo suficientemente bien, las cercas no; si solo traza en caja los datos transformados (como hice aquí), los bigotes tendrán valores de x diferentes que en el gráfico original.
Aquí usé un inverso-hiperbólico-sin (asinh); es similar a un registro en las colas y similar a lineal cerca de cero, pero a la gente generalmente no le parece una transformación intuitiva, por lo que en general no recomendaría esta opción a menos que una transformación bastante intuitiva como el registro sea obvia. Código para eso:
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) saltos de escala: tome valores extremos extremos y comprímalos en ventanas estrechas en cada extremo con una escala mucho más comprimida que en el centro. Le recomiendo un descanso completo en toda la escala si hace esto.
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) recorte de valores atípicos extremos (que normalmente no recomendaría sin indicar esto muy claramente, pero parece la siguiente trama, sin "<5" y "2>" en cada extremo), y
4) lo que llamaré "flechas" extremadamente atípicas - similar al recorte, pero con el recuento de valores recortados indicado en cada extremo
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)))