tipos - Escala R Elementos de la trama dentro del PDF del ancho y la altura establecidos
trama descriptiva (4)
Aunque las parcelas R enviadas a un PDF se pueden reajustar a voluntad en un software de ilustración o diseño de página, las revistas científicas a menudo insisten en que las parcelas provistas tienen dimensiones específicas.
¿Se puede escalar el tamaño de todos los elementos de trazado en un tamaño de PDF determinado directamente en R?
require(ggplot2)
p <- qplot(data=iris,
x=Petal.Width,
y=Petal.Length,
colour=Species)
pdf("./test_plot_default.pdf")
print(p)
graphics.off()
Produce escalamiento adecuado de los elementos de la trama.
Sin embargo, cambiar los elementos de tamaño de PDF no hace que los elementos de la trama se escalan. Con archivos PDF más pequeños, los elementos de trazado están demasiado agrandados en comparación con el espacio de trazado.
pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()
Usando la sugerencia de @Rosen Matev:
update_geom_default("point", list(size=1))
theme_set(theme_grey(base_size=6))
pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()
Considere usar ancho , alto y tamaño de puntos en la función pdf ().
Si desea seguir utilizando pdf () en lugar de otras formas como usar sweave, entonces sería mejor que use la función pdf con más argumentos, como el de abajo (no tengo ggplot2 instalado, por lo que se proporciona un caso similar).
# making scaled plot in pdf
# using paper=a4 just to see the efect
for (sc in c(0.5,0.75,1)) {
pdf(width=7*sc,height=7*sc,pointsize=12*sc,file=paste("scale",sc,".pdf",sep=""),paper="a4")
plot(sin((1:314)/100),main=paste("PDF sc",sc))
dev.off()
}
Es bastante utilizable, pero funciona en cierta medida. Una vez que la escala sea demasiado pequeña, el pdf comenzará a imponer el ancho de línea, el tamaño de fuente, etc.
Vea los resultados en escala * .pdf creado por ejemplo.
Y para ggplot2 ...
sc <- c(0.5,0.75,1)
fi <- c("pic1.pdf","pic2.pdf","pic3.pdf")
require(ggplot2)
p <- qplot(data=iris,
x=Petal.Width,
y=Petal.Length,
colour=Species)
for (i in 1:3) {
pdf(width=7*sc[i],height=7*sc[i],pointsize=12*sc[i],file=fi[i])
print(p)
dev.off()
}
Código de látex para probar los archivos como se ven en un documento:
/documentclass[a4paper,11pt]{report}
/usepackage[T1]{fontenc}
/usepackage[utf8]{inputenc}
/usepackage{graphics}
/begin{document}
/begin{figure}
/includegraphics{pic1.pdf}
/end{figure}
/begin{figure}
/includegraphics{pic2.pdf}
/end{figure}
/begin{figure}
/includegraphics{pic3.pdf}
/end{figure}
/end{document}
Las revistas insisten en tener dimensiones específicas de la trama para evitar escalas. Si se crea, puede hacer que el tamaño de la fuente sea demasiado pequeño (o grande) e inconsistente con el tamaño de la fuente del título de la figura. Es por eso que los elementos de la trama (texto, tamaño de punto, etc.) por diseño tienen el mismo tamaño absoluto independientemente del tamaño del pdf.
Puede cambiar el tamaño de fuente y el tamaño de punto predeterminados, por ejemplo, con:
p <- ggplot(iris, aes(x=Petal.Width, y=Petal.Length, colour=Species)) +
geom_point(size=1.5) + # default is 2
theme_grey(base_size=10) # default is 12
ggsave("test.1.pdf", p)
Los valores predeterminados también se pueden cambiar globalmente:
update_geom_defaults("point", list(size=1.5))
theme_set(theme_grey(base_size=10))
Por extraño que parezca, puedes hacer esto con scale=
en ggsave(...)
require(ggplot2)
p <- qplot(data=iris, x=Petal.Width, y=Petal.Length, colour=Species)
ggsave("test.1.pdf",p)
ggsave("test.2.pdf",p, width=3, height=3, units="in", scale=3)
Intenta jugar con el parámetro de scale
y mira lo que obtienes ...
Una opción igualmente buena o mejor que el pdf es tiff. Todas las revistas que he encontrado como tiff.
tiff(filename="name.tiff", width=5, height=5, units="in",
pointsize=8, compression="lzw", bg="white", res=600,
restoreConsole=TRUE)
qplot(data=iris, x=Petal.Width, y=Petal.Length, colour=Species)
dev.off()
Si estás en Linux, suelta restoreConsole=TRUE
, parece que solo a Windows le gusta eso.