就像在标题中一样:无论我从RMarkdown插入Word中的绘图是多么花哨或简单,我都会得到一个高度和宽度为101%的图像。这很烦人,因为这会使情节模糊不清。
示例
这个简短的.Rmd文件:
---
output:
word_document
---
```{r, echo=F}
plot(1:100)
```
编织这个:
然后我右键单击它,选择属性并看到它插入了101%的原始大小(下面的奇怪语言是抛光;)
当我将其重置为100%时,它看起来更好:
问题 如何强制RMarkdown插入100%宽度和高度的图?
我尝试了什么
(这些都不起作用)
fig.width
和fig.height
块选项)dev
和res
块选项)答案 0 :(得分:4)
首先,请注意,当实施this knitr
feature request时,您必须停止使用以下答案。
可以使用pandoc
link attributes解决此问题。如pandoc
文档中所述,没有链接属性“ 后备是查看图像分辨率和图像文件中嵌入的dpi元数据”(我认为麻烦来自此后备方法)。
链接属性是pandoc
1.16中引入的最新pandoc
功能。 knitr
尚不支持此功能,但是根据上述功能要求很快就会提供。
只要knitr
不支持pandoc
链接属性,这就是解决这个问题的有力建议。它使用knitr
plot hook。
---
output: word_document
---
```{r setup, echo=FALSE}
default_plot_hook <- knitr::knit_hooks$get('plot')
knitr::knit_hooks$set(plot = function(x, options) {
default_md <- default_plot_hook(x, options)
link_attr <- sprintf("{width=%sin height=%sin}", options$fig.width, options$fig.height)
sub("(!\\[.*]\\(.*\\))", paste0("\\1", link_attr), default_md)
})
```
```{r, echo=F}
plot(1:100)
```
说明
RMarkdown
文件(.Rmd
)渲染过程的第一步是生成普通的markdown
文件(.md
)。 这是knitr
的工作。
该过程的第二步是从该word
文件生成.docx
文件(markdown
)。 这是pandoc
的工作。
请注意,您可以使用markdown
标头中的keep_md
选项来检查此中间YAML
文件:
---
output:
word_document:
keep_md: true
---
在knitr
的可用版本中,图像的链接由knitr
呈现,如下所示:
![](myreport_files/figure-docx/unnamed-chunk-1-1.png)<!-- -->
没有链接属性,因此pandoc
使用后备方法确定图像的尺寸。
建议的knitr
绘图钩将宽度和高度属性添加到链接。
它返回以下markdown
:
![](myreport_files/figure-docx/unnamed-chunk-1-1.png){width=5in height=4in}<!-- -->
因此,pandoc
从这些属性而不是回退方法确定图像的尺寸。
很明显,要使用此建议,您的pandoc
版本必须为> = 1.16。