我正在尝试在比较为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.
我的设置和系统的规格
我正在尝试创建自己的pandoc模板,以便与RStudio/Rmarkdown和HTML输出一起使用.经过一些代码窥探,谷歌搜索和试用/错误我有一个功能模板,按预期工作.我已将模板包含在R包中以及我自己的自定义函数中进行调用html_document().
但是,我无法确定指定/引用我希望包含在我的pandoc HTML模板中的本地资产(例如图像)的适当方法.我已经尝试指定相对于pandoc模板的路径没有运气.我猜想我需要提供一个绝对的路径,我可以从中获得System.file().对于标题中指定的css文件等资产,我可以将其作为自定义调用的一部分来处理html_document.但是,在这种情况下,我试图在HTML正文中指定一个路径,而不确定如何在pandoc模板中优雅地包含它.
以 R 中的以下示例为例
library(dplyr)
library(tidyr)
mtcars_cyl <- mtcars %>% group_by(cyl) %>% nest()
Run Code Online (Sandbox Code Playgroud)
如果我们查看 的列名称mtcars_cyl,我们会发现cyl不再包含它。
mtcars_cyl$data[[1]] %>% colnames()
[1] "mpg" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
Run Code Online (Sandbox Code Playgroud)
我本来希望找到一些方法/选项来保留group_by
中的列data,但我却找不到解决方案。我可以理解这可能是一个利基需求。例如,人们可能想要为每个group_by数据框创建一个表,并将其cyl作为一列包含在该输出中。
library(pander)
mtcars_cyl$data %>% pander::pander()
Run Code Online (Sandbox Code Playgroud)
在其他情况下,与 结合使用时purrr,可能需要group_by在函数调用中包含这些列。