2010-10-26 13 views
9

Estoy usando geom_density para trazar densidades con colas muy finas. Quiero restringir el rango del eje y (por lo que la parte superior de la distribución estará fuera de la pantalla y la cola es más visible), pero está tirando datos que están fuera de la pantalla cuando calcula la densidad, en lugar de simplemente no mostrar qué está fuera de la pantalla.Restringir el rango del eje y en ggplot + geom_density

E.g.

Esto representa gráficamente la distribución completa,

testData = data.frame(counts=c(rep(1,5), 1:10)) 
ggplot(testData, aes(x=testData$counts))+geom_density() 

pero cuando la gama y está restringido, parece que la distribución tiene soporte más pequeño.

ggplot(testData, aes(x=testData$counts))+geom_density()+scale_y_continuous(limits=c(0,0.1)) 

¿Cómo puedo "acercarme" en el eje y sin tirar datos?

Respuesta

27

Creo que estás buscando coord_cartesian():

ggplot(testData, aes(x=testData$counts))+geom_density()+coord_cartesian(ylim=c(0, 0.1)) 
+0

fantástico. Supongo que debo haber malinterpretado el propósito scale_y_continuous. Supongo que debe ser más para truncar el rango del conjunto de datos. – Pengin

+5

Exactamente. Las funciones de conveniencia 'xlim()' y 'ylim()' también eliminan datos fuera de sus límites, por lo que ayuda a desconfiar de ellos también. Normalmente utilizo 'xlim()' y 'ylim()' para expandir la grilla (p. Ej., Para imponer la simetría) y 'coord_cartesian()' para acercar. –

Cuestiones relacionadas