gpt4 book ai didi

以 101% 的宽度和高度插入到 Word 中的 RMarkdown 图

转载 作者:行者123 更新时间:2023-12-05 03:05:31 28 4
gpt4 key购买 nike

就像在标题中一样:无论我从 RMarkdown 插入到 Word 中的图表多么花哨或简单,我都会得到一个高度和宽度为 101% 的图像。这很烦人,因为这会使绘图看起来模糊。

示例

这个简短的 .Rmd 文件:

---
output:
word_document

---

```{r, echo=F}
plot(1:100)
```

编织到这个:

enter image description here

然后我右键单击它,选择属性,然后看到它以原始大小的 101% 插入(下面奇怪的语言是波兰语;))

enter image description here

当我将它重置为 100% 时,它看起来好多了:

enter image description here

问题如何强制 RMarkdown 插入 100% 宽度和高度的绘图?

我尝试过的

(这些都不起作用)

  • 更改绘图大小(fig.widthfig.height block 选项)
  • 将 Word 中的默认单位从厘米更改为英寸
  • 更改用于绘图的设备及其分辨率(devres block 选项)

最佳答案

首先,请注意当 this knitr feature request将实现,您将必须停止使用以下答案。

这个问题可以用pandoc来解决link attributes .正如 pandoc 文档中所解释的,没有链接属性“回退是查看图像文件中嵌入的图像分辨率和 dpi 元数据”(我认为问题来了从这个回退方法)。

链接属性是最近的 pandoc 功能,在 pandoc 1.16 中引入。 knitr 尚不支持,但会根据上述功能要求尽快支持。

只要 knitr 不支持 pandoc 链接属性,这里有一个 hacky 提议来解决这个问题。它使用 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 的工作。

该过程的第二步是从该 markdown 文件生成 word 文件 (.docx)。 这是 pandoc 的工作。

请注意,您可以使用 YAML header 中的 keep_md 选项检查此中间 markdown 文件:

---
output:
word_document:
keep_md: true
---

knitr 的可用版本中,图像链接由 knitr 呈现,如下所示:

![](myreport_files/figure-docx/unnamed-chunk-1-1.png)<!-- -->

没有链接属性,所以 pandoc 使用其后备方法确定图像的尺寸。

建议的 knitr plot hook 将宽度和高度属性添加到链接。
它返回以下 markdown:

![](myreport_files/figure-docx/unnamed-chunk-1-1.png){width=5in height=4in}<!-- -->

因此,pandoc 根据这些属性而不是回退方法确定图像的尺寸。

显然,要使用此提案,您的 pandoc 版本必须 >= 1.16。

关于以 101% 的宽度和高度插入到 Word 中的 RMarkdown 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50855815/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com