visualizacion varias superponer studio los graficos grafico graficas ggplot escala ejes datos con como cambiar barras r ggplot2

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