superponer - varias graficas en r ggplot
ggplot2 gráfico de barras, no hay espacio entre la parte inferior de geom y el eje x mantienen el espacio arriba (4)
Cuando trazo un gráfico de barras en ggplot2, me gustaría reducir el espacio entre la parte inferior de las barras y el eje x a 0, pero mantener el espacio sobre las barras y el cuadro de trazado. Tengo un truco para hacerlo a continuación. Está sucio y quiero estar limpio de nuevo. ¿Hay alguna manera de lograr este comportamiento sin el pequeño hack sucio?
Predeterminado (espacio deseado arriba pero no quiere espacio debajo de barras):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar()
Use expand (espacio 0 no deseado arriba pero obtuvo el espacio 0 debajo de barras):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0))
Dirty Hack (me gusta pero es ... bueno, sucio):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0)) +
geom_text(aes(x=1, y=10.3, label="Stretch it"), vjust=-1)
Esta es una forma automática de producir el espaciado en la parte superior, pero elimina el espaciado inferior. Uso un 3% de relleno ya que eso es lo que codificaste.
plot1 <- ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar()
plotInfo <- print(plot1)
yMax <- max(plotInfo$data[[1]]$ymax)
yLimitMax <- 1.03 * yMax
plot2 <- plot1 +
scale_y_continuous(expand = c(0,0),
limits = c(0,yLimitMax))
Si desea eliminar las tres líneas entre las parcelas, simplemente escriba esto en la plot2
en plot2
lugar:
limits = c(0, 1.03 * max(print(plot1)$data[[1]]$ymax))
Porque pareces cómodo con algo de hardcoding ...
ggplot(mtcars, aes(x = as.factor(carb))) +
geom_bar() +
coord_cartesian(ylim = c(0, 10.3))
Puede ampliar los límites manualmente, por ejemplo, con expand_limits(y=10.1)
, o usar este truco para agregar una capa invisible con datos a escala,
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0)) +
geom_blank(aes(y=1.1*..count..), stat="bin")
Puede que me esté perdiendo lo que realmente quieres, pero sin usar el hack de geom_text
todavía puedes establecer los límites
ggplot(mtcars, aes(x = as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0, 0), limits = c(0, 10.3))
# marginally cleaner