当我使用 knitr 从 RStudio 中生成.pdf文件时,单个图会表现出所需的轴标签、图例等字体大小。但是,当我使用 layout() 函数生成多个子图时,这些字体大小会减小。请参阅下面的示例代码。
documentclass[12pt,english,twocolumn]{article}
begin{document}
<<settings, message=FALSE, echo=FALSE, cache=FALSE>>=
# set tikz default options
opts_chunk$set(
out.width='15cm',
fig.width=5.906, # inch
fig.height=5.906, # inch
dev='tikz',
fig.align='center',
fig.lp='fig:',
fig.env='figure*',
dev.args=list(pointsize=10),
message=FALSE,
echo=FALSE
)
options(tikzDefaultEngine = "pdftex")
@
<<singlePlot, fig.cap="single plot with good font size">>=
par(cex=1)
plot(rnorm(100))
@
<<multiplePlots, fig.cap="multiple plots with fonts being too small">>=
par(cex=1)
layout(matrix(1:9, 3))
for(i in 1:9) plot(rnorm(100))
@
end{document}
如何使第二个图中的字体与第一个绘图中的字体大小相同?谢谢!
天哪,我在发布问题后仅 30 秒就自己想通了......
诀窍是颠倒第二个图中 layout() 和 par() 的顺序,如下所示:
<<multiplePlots, fig.cap="multiple plots with fonts being just right">>=
layout(matrix(1:9, 3))
par(cex=1)
for(i in 1:9) plot(rnorm(100))
@
这按预期工作。
因此,在设置多个绘图时,layout() 似乎在内部调用 par() 以设置新的(较小的)字符扩展值。因此,在布局之前设置 par(cex=1) 不起作用。我不知道这一点,但这是有道理的。很抱歉不必要的干扰。