tutorial ggplot geom_text español color r ggplot2

geom_text - Elimine la cuadrícula, el color de fondo y los bordes superior y derecho de ggplot2



manual ggplot2 (4)

Me gustaría reproducir la trama inmediatamente debajo usando ggplot2. Puedo acercarme, pero no puedo quitar los bordes superior y derecho. A continuación, presento varios intentos con ggplot2, incluidas varias sugerencias que se encuentran en Stackoverflow oa través de este. Desafortunadamente no he podido hacer que esas sugerencias funcionen.

Espero que alguien pueda corregir uno o más de los fragmentos de código a continuación.

Gracias por cualquier sugerencia.

# desired plot a <- seq(1,20) b <- a^0.25 plot(a,b, bty = "l") library(ggplot2) df <- as.data.frame(cbind(a,b)) # 1. ggplot2 default ggplot(df, aes(x = a, y = b)) + geom_point() # 2. removes background color ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) # 3. also removes gridlines none <- theme_blank() ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) + opts(panel.grid.major = none, panel.grid.minor = none) # 4. does not remove top and right border ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) + opts(panel.grid.major = none, panel.grid.minor = none) + opts(panel.border = none) # 5. does not remove top and right border ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) + opts(panel.grid.major = none, panel.grid.minor = none) + opts(axis.line = theme_segment()) # 6. removes x and y axis in addition to top and right border # http://stackoverflow.com/questions/5458409/remove-top-and-right-border-from-ggplot2 ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) + opts(panel.grid.major = none, panel.grid.minor = none) + opts(panel.background=theme_rect(colour=NA)) # 7. returns error when attempting to remove top and right border # https://groups.google.com/group/ggplot2/browse_thread/thread/f998d113638bf251 # # Error in el(...) : could not find function "polylineGrob" # theme_L_border <- function(colour = "black", size = 1, linetype = 1) { structure( function(x = 0, y = 0, width = 1, height = 1, ...) { polylineGrob( x=c(x+width, x, x), y=c(y,y,y+height), ..., default.units = "npc", gp=gpar(lwd=size, col=colour, lty=linetype), ) }, class = "theme", type = "box", call = match.call() ) } ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill=''white'', colour=''black'')) + opts(panel.grid.major = none, panel.grid.minor = none) + opts( panel.border = theme_L_border())


Las actualizaciones recientes a ggplot (0.9.2+) han revisado la sintaxis de los temas. En particular, opts() ahora está en desuso, habiendo sido reemplazado por theme() . respuesta seguirá (a partir de enero de 12) genera un gráfico, pero hace que R arroje un montón de advertencias.

Aquí está el código actualizado que refleja la sintaxis de ggplot actual:

library(ggplot2) a <- seq(1,20) b <- a^0.25 df <- as.data.frame(cbind(a,b)) #base ggplot object p <- ggplot(df, aes(x = a, y = b)) p + #plots the points geom_point() + #theme with white background theme_bw() + #eliminates background, gridlines, and chart border theme( plot.background = element_blank() ,panel.grid.major = element_blank() ,panel.grid.minor = element_blank() ,panel.border = element_blank() ) + #draws x and y axis line theme(axis.line = element_line(color = ''black''))

genera:


Seguí la respuesta de Andrew , pero también tuve que seguir https://.com/a/35833548 y configurar los ejes xey por separado debido a un error en mi versión de ggplot (v2.1.0).

En lugar de

theme(axis.line = element_line(color = ''black''))

solía

theme(axis.line.x = element_line(color="black", size = 2), axis.line.y = element_line(color="black", size = 2))


Una alternativa a theme_classic() es el tema que viene con el paquete theme_cowplot() , theme_cowplot() (cargado automáticamente con el paquete). Se parece a theme_classic() , con algunas diferencias sutiles. Lo que es más importante, los tamaños de etiqueta predeterminados son más grandes, por lo que las figuras resultantes pueden usarse en publicaciones sin necesidad de modificaciones adicionales (en particular, si las guarda con save_plot() lugar de ggsave() ). Además, el fondo es transparente, no blanco, lo que puede ser útil si desea editar la figura en Illustrator. Finalmente, las trazas facetadas se ven mejor, en mi opinión.

Ejemplo:

library(cowplot) a <- seq(1,20) b <- a^0.25 df <- as.data.frame(cbind(a,b)) p <- ggplot(df, aes(x = a, y = b)) + geom_point() save_plot(''plot.png'', p) # alternative to ggsave, with default settings that work well with the theme

Esto es lo que el archivo plot.png producido por este código se ve así:

Descargo de responsabilidad: soy el autor del paquete.


EDITAR Ignora esta respuesta. Ahora hay mejores respuestas. Ver los comentarios. Usar + theme_classic()

EDITAR

Esta es una mejor versión. El error mencionado a continuación en la publicación original permanece (creo). Pero la línea del eje se dibuja debajo del panel. Por lo tanto, quite tanto panel.border como panel.background para ver las líneas del eje.

library(ggplot2) a <- seq(1,20) b <- a^0.25 df <- as.data.frame(cbind(a,b)) ggplot(df, aes(x = a, y = b)) + geom_point() + theme_bw() + theme(axis.line = element_line(colour = "black"), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank(), panel.background = element_blank())

Publicación original Esto se acerca. Hubo un error con axis.line no funcionaba en el eje y ( ver aquí ), que parece que aún no ha sido arreglado. Por lo tanto, después de quitar el borde del panel, el eje y debe dibujarse por separado usando geom_vline .

library(ggplot2) library(grid) a <- seq(1,20) b <- a^0.25 df <- as.data.frame(cbind(a,b)) p = ggplot(df, aes(x = a, y = b)) + geom_point() + scale_y_continuous(expand = c(0,0)) + scale_x_continuous(expand = c(0,0)) + theme_bw() + opts(axis.line = theme_segment(colour = "black"), panel.grid.major = theme_blank(), panel.grid.minor = theme_blank(), panel.border = theme_blank()) + geom_vline(xintercept = 0) p

Los puntos extremos están recortados, pero el recorte se puede deshacer usando el código de baptiste .

gt <- ggplot_gtable(ggplot_build(p)) gt$layout$clip[gt$layout$name=="panel"] <- "off" grid.draw(gt)

O use limits para mover los límites del panel.

ggplot(df, aes(x = a, y = b)) + geom_point() + xlim(0,22) + ylim(.95, 2.1) + scale_x_continuous(expand = c(0,0), limits = c(0,22)) + scale_y_continuous(expand = c(0,0), limits = c(.95, 2.2)) + theme_bw() + opts(axis.line = theme_segment(colour = "black"), panel.grid.major = theme_blank(), panel.grid.minor = theme_blank(), panel.border = theme_blank()) + geom_vline(xintercept = 0)