Tengo datos que se centran principalmente en un rango pequeño (1-10) pero hay un número significativo de puntos (por ejemplo, 10%) que están en (10-1000). Me gustaría trazar un histograma para esta información que se centrará en (1-10) pero también mostrará los datos (10-1000). Algo así como una escala logarítmica para el histograma.¿Cómo puedo trazar un histograma de datos de cola larga usando R?
Sí, sé que esto no significa que todas las bandejas son de igual tamaño
Un simple hist(x)
da mientras
hist(x,breaks=c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,3,4,5,7.5,10,15,20,50,100,200,500,1000,10000)))
da
ninguno de los cuales es lo que quiero.
actualización siguiendo las respuestas aquí ahora produzco algo que es casi exactamente lo que quiero (fui con una trama continua en lugar de barras de histograma):
breaks <- c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,4,8)
ggplot(t,aes(x)) + geom_histogram(colour="darkblue", size=1, fill="blue") + scale_x_log10('true size/predicted size', breaks = breaks, labels = breaks)![alt text][3]
el único problema es que me gustaría hacer coincidir entre la escala y las barras reales trazadas. Hay dos opciones para hacerlo: la una es simplemente usar los márgenes reales de las barras trazadas (¿cómo?) Y luego obtener etiquetas "feas" de eje x como 1.1754,1.2985, etc. La otra, que prefiero, es controlar el real se usan márgenes de contenedores para que coincidan con los descansos.
@Marek mi pregunta para registrar el eje x (o similar), no los valores (eje y) –
@David Mi mal. Rollback;) – Marek
posible duplicado de: http://stackoverflow.com/questions/1245273/histogram-with-logarithmic-scale –