如何在每页有多个图的图中指定字体大小?

时间:2015-04-25 21:39:56

标签: r knitr

当我在RStudio中使用knitr生成.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}

如何让第二个图中的字体与第一个图中的字体大小相同?谢谢!

1 个答案:

答案 0 :(得分:1)

哦,我在发布问题后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)无效。我不知道这一点,但它是有道理的。对不必要的干扰感到抱歉。