establecer solo el límite inferior de un límite para ggplot


81

¿Es posible establecer solo el límite inferior de un límite para escala continua? Quiero hacer que todas mis gráficas se basen en 0 sin necesidad de especificar el límite superior.

p.ej

+ scale_y_continuous(minlim=0)

Respuestas:


116

Puedes usar expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

Aquí hay una comparación de los dos:

  • sin expand_limits

  • con expand_limits

A partir de la versión 1.0.0 de ggplot2, puede especificar solo un límite y hacer que el otro sea como se determinaría normalmente estableciendo ese segundo límite en NA. Este enfoque permitirá tanto la expansión como el truncamiento del rango del eje.

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

especificarlo a través de ylim(c(0, NA))da una cifra idéntica.


@PatrickT ¿Quiso decir eso como un comentario para stackoverflow.com/q/27028825/892313 ?
Brian Diggs

Exactamente lo que estaba buscando. Gracias
Veera

12

¿Qué tal usar aes(ymin=0), como en:

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
Esto anula el ymin para geom_errorbar, etc .; expand_limits () parece más seguro.
Mark

Esto no es universal, ya geom_densityque me da Error: stat_bin() must not be used with a y aesthetico cuando se coloca dentro de geom_density, Warning: Ignoring unknown aesthetics: ymin(este último es completamente esperado)
PatrickT

7

También puede probar el siguiente código que le dará el eje y mínimo en cero y también sin el espacio adicional entre el eje x y el valor y mínimo.

scale_y_continuous(limits = c(0, NA), expand = c(0,0))

1
¿Hay alguna forma de hacer esto con coord_cartesian()?
randy

-1

No creo que puedas hacer esto directamente. Pero como solución alternativa, puede imitar la forma en que ggplot2 determina el límite superior:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.