R缩放设置宽度和高度的PDF中的绘图元素

时间:2014-01-31 16:25:55

标签: r pdf plot ggplot2

虽然发送到PDF的R图可以在插图或页面布局软件中随意重新调整,但科学期刊经常坚持提供的图表具有特定的尺寸。

所有绘图元素的大小是否可以直接在R?

中在给定的PDF大小内缩放
require(ggplot2)

p <- qplot(data=iris,
           x=Petal.Width,
           y=Petal.Length,
           colour=Species)

pdf("./test_plot_default.pdf")
print(p)
graphics.off()

生成适当的绘图元素缩放

test plot with default pdf size

但是,更改PDF大小元素不会导致绘图元素缩放。对于较小的PDF,绘图元素与绘图空间相比过度放大。

pdf("./test_plot_dimentionsions required by journal.pdf", width=3, height=3)
print(p)
graphics.off()

enter image description here

使用@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()

enter image description here

4 个答案:

答案 0 :(得分:6)

期刊坚持拥有特定的地块尺寸以避免缩放。如果制作,它可以使字体大小太小(或大)并且与图标题字体大小不一致。这就是为什么设计中的绘图元素(文本,点大小等)具有相同的绝对大小,无论PDF大小如何。

您可以更改默认字体大小和磅值,例如:

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)

默认值也可以全局更改:

update_geom_defaults("point", list(size=1.5))
theme_set(theme_grey(base_size=10))

答案 1 :(得分:4)

奇怪的是,您可以使用scale=

中的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)

尝试使用scale参数进行游戏,看看你得到了什么......

答案 2 :(得分:3)

考虑在pdf()函数中使用 width height pointsize

如果你喜欢使用pdf()而不是像使用sweave这样的其他方法,那么你最好使用带有更多参数的pdf函数,比如bellow(我没有安装ggp​​lot2,所以提供了simillar case)。 / p>

# 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()  
}

它非常实用,但在某种程度上有效。一旦比例太小,pdf将开始强制执行线宽,字体大小等。

查看示例创建的比例* .pdf结果。

对于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()  
}

用于测试文件在一个文档中的外观的Latex代码:

\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}

答案 3 :(得分:0)

与pdf同样好或更好的选项是tiff。我遇到的所有期刊都像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()

如果您使用的是Linux,请删除restoreConsole=TRUE,似乎只有Windows喜欢这样。