Jos*_*don 13 r rstudio knitr r-markdown
我正在尝试在比较为knitr文档生成的图时对字体大小的显着差异进行故障排除.HTML /降价输出似乎是我认为正确的大小,而PDF/Latex输出大约2-4磅(例如,如果我期望12pt,输出更接近14或16分).请注意,问题似乎仅限于绘图/图形文本,并且似乎没有与输出文档中的其他文本一起显示.
我演示这个的最简单方法是使用*.Rmd创建新文件时RStudio(版本0.99.329)填充的默认内容.通过此链接可以进行并排比较.在我看来,HTML版本的大小合适,而PDF/Latex版本则没有.
据我所知,我的.Rprofile或其他可能影响此问题的位置没有任何自定义设置.我尝试过禁用/启用pdf crop,这似乎也没有影响到这个问题.我在同事机器上复制了这个问题(同时运行OS X和相同版本的RStudio).
在rmarkdown框架之外(即,只运行R代码),PDF和PNG输出之间似乎没有这样的差异.例如,以下代码生成的输出非常相似:
library(ggplot2)
r <- ggplot(data = diamonds,
aes(x = carat, y = price, color = cut, group = cut))
r + geom_smooth(size = 2) +
ggtitle("Plant growth with\ndifferent treatments")
ggsave(file="test.pdf")
ggsave(file="test.png")
Run Code Online (Sandbox Code Playgroud)
鉴于上面的代码产生的输出图非常相似,我怀疑我看到的问题与knitr或rmarkdown/pandoc转换过程有关.
所以,我的主要问题是我在输出格式之间看到的差异程度是否是预期的?我是唯一一个?它对我的系统来说是独特的吗?
如果是预期的行为,那么人们如何协调这个问题呢?对于ggplots,我一直在使用theme_bw(8.5)缩小PDF /乳胶输出的字体.这样可行,但是当为同一*.Rmd文件中的多个平台/使用创建输出时,它会增加另一层复杂性... ...的一个主要优点rmarkdown.
我的设置和系统的规格
您是否尝试过这种为不同输出格式设置不同输出设备的解决方案?这里是:
通过在 Makefile 中设置 knitr 的特定选项,从唯一的 Markdown 文件生成 pdf 和 html 输出的解决方案:
$(PDF): $(SRC) Makefile
Rscript \
-e "library(knitr)" \
-e "opts_chunk[['set']](dev = 'pdf')" \
-e "pat_gfm()" \
-e "knit('$<', 'temp.md')"
$(PANDOC) temp.md -o $@
rm temp.md
Run Code Online (Sandbox Code Playgroud)
这个答案也有有趣的想法。
这里是:
尝试将此代码块放在 Rmd 文档的开头。
```{r setup, cache=FALSE, include=FALSE}
library(knitr)
output <- opts_knit$get("rmarkdown.pandoc.to")
if (output=="html") opts_chunk$set(fig.width=11, fig.height=11)
if (output=="docx") opts_chunk$set(fig.width=6, fig.height=6)
```
Run Code Online (Sandbox Code Playgroud)
opts_knit$get() 返回的包选项之一是 markdown.pandoc.to。这显然设置为“html”、“docx”或“latex”,具体取决于所选的输出格式(HTML、Word 或 PDF)。因此,您可以测试它并相应地设置块选项Fig.width和Fig.Height。