tutorial theme ggtitle ggplot geom_bar español r ggplot2

theme - Colocación de leyenda, ggplot, relativo a la región de trazado



ggtitle (4)

He estado buscando una respuesta similar. Pero descubrió que la función opts ya no forma parte del paquete ggplot2. Después de buscar un poco más de tiempo, descubrí que uno puede usar el theme para hacer cosas similares como opts. Por lo tanto, editar este hilo, para minimizar el tiempo de los demás.

A continuación se muestra el código similar escrito por nzcoops .

mtcars$cyl <- factor(mtcars$cyl, labels=c("four","six","eight")) library(gridExtra) a <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + labs(title = "Legend is top left") + theme(legend.justification = c(0, 1), legend.position = c(0, 1)) b <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + labs(title = "Legend is bottom right") + theme(legend.justification = c(1, 0), legend.position = c(1, 0)) c <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + labs(title = "Legend is bottom left") + theme(legend.justification = c(0, 0), legend.position = c(0, 0)) d <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + labs(title = "Legend is top right") + theme(legend.justification = c(1, 1), legend.position = c(1, 1)) grid.arrange(a,b,c,d)

Este código dará una trama exactamente similar.

El problema aquí es un poco obvio, creo. Me gustaría que la leyenda se coloque (bloqueada) en la esquina superior izquierda de la ''región de trazado''. Usar c (0.1.0.13) etc. no es una opción por varias razones.

¿Hay alguna forma de cambiar el punto de referencia de las coordenadas para que estén relacionadas con la región de trazado?

mtcars$cyl <- factor(mtcars$cyl, labels=c("four","six","eight")) ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.position = c(0, 1), title="Legend placement makes me sad")

Aclamaciones


Para ampliar las respuestas de excellend anteriores, si desea agregar relleno entre la leyenda y el exterior de la caja, use legend.box.margin :

# Positions legend at the bottom right, with 50 padding # between the legend and the outside of the graph. theme(legend.justification = c(1, 0), legend.position = c(1, 0), legend.box.margin=margin(c(50,50,50,50)))

Esto funciona en la última versión de ggplot2 que es v2.2.1 en el momento de la escritura.


Actualización: opts ha quedado obsoleto. Utilice el theme lugar, como se describe en esta respuesta.

La colocación de la guía se basa en la región de la gráfica (es decir, el área llena de gris) de forma predeterminada, pero la justificación se centra. Entonces necesitas establecer la justificación izquierda-arriba:

ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.position = c(0, 1), legend.justification = c(0, 1), legend.background = theme_rect(colour = NA, fill = "white"), title="Legend placement makes me happy")

Si desea colocar la guía en la región del dispositivo completo, puede ajustar la salida de tablable:

p <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.position = c(0, 1), legend.justification = c(0, 1), legend.background = theme_rect(colour = "black"), title="Legend placement makes me happy") gt <- ggplot_gtable(ggplot_build(p)) nr <- max(gt$layout$b) nc <- max(gt$layout$r) gb <- which(gt$layout$name == "guide-box") gt$layout[gb, 1:4] <- c(1, 1, nr, nc) grid.newpage() grid.draw(gt)


Actualización: opts ha quedado obsoleto. Utilice el theme lugar, como se describe en esta respuesta.

Solo para expandir la respuesta de Kohske, entonces es un poco más completa para que la siguiente persona se tropiece con ella.

mtcars$cyl <- factor(mtcars$cyl, labels=c("four","six","eight")) library(gridExtra) a <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.justification = c(0, 1), legend.position = c(0, 1), title="Legend is top left") b <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.justification = c(1, 0), legend.position = c(1, 0), title="Legend is bottom right") c <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.justification = c(0, 0), legend.position = c(0, 0), title="Legend is bottom left") d <- ggplot(mtcars, aes(x=wt, y=mpg, colour=cyl)) + geom_point(aes(colour=cyl)) + opts(legend.justification = c(1, 1), legend.position = c(1, 1), title="Legend is top right") grid.arrange(a,b,c,d)