Solución:
EDITAR Ignore esta respuesta. Ahora hay mejores respuestas. Vea 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, elimine tanto el panel.border
y 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 funciona en el eje y (ver aquí), que parece no estar arreglado todavía. 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 usar 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)
Las actualizaciones recientes de ggplot (0.9.2+) han revisado la sintaxis de los temas. Más destacado, opts()
ahora está en desuso, después de haber sido reemplazado por theme()
. La respuesta de Sandy todavía (a partir de enero de 2012) generará un gráfico, pero hace que R lance un montón de advertencias.
Aquí está el código actualizado que refleja la sintaxis actual de ggplot:
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:
Una alternativa a theme_classic()
es el tema que viene con el paquete cowplot, theme_cowplot()
(cargado automáticamente con el paquete). Se parece a theme_classic()
, con algunas sutiles diferencias. Lo más importante es que los tamaños de etiqueta predeterminados son más grandes, por lo que las cifras resultantes se pueden utilizar en publicaciones sin necesidad de realizar más modificaciones (en particular, si las guarda con save_plot()
en lugar de ggsave()
). Además, el fondo es transparente, no blanco, lo que puede resultar útil si desea editar la figura en Illustrator. Finalmente, las parcelas 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.