如何将图形导入为其原始高度/宽度比?

Posted

技术标签:

【中文标题】如何将图形导入为其原始高度/宽度比?【英文标题】:How to import a figure as its original height/width ratio? 【发布时间】:2022-01-15 14:39:47 【问题描述】:

我正在使用officedown 包来生成一个Word 文档。请问,如果我想从磁盘导入一个设计好的图形,如何控制officedown不改变图形的高宽比?

比如我原来的图是这样的:

但是,在officedown生成的Word文档中,是这样的:

请问,如何避免officedown中的失真?以及如何让图形的宽度走整条线?

我的问题可以通过以下代码重现:

---
output: officedown::rdocx_document
---

```r setup, include=FALSE
knitr::opts_chunk$set(
    echo = FALSE,
    fig.cap = TRUE,
    message = FALSE,
    warning = FALSE
)
library(officedown)
library(officer)
```

```r
knitr::include_graphics("the file path to a figure")
```

非常感谢您的友好指导!

【问题讨论】:

可能重复:***.com/questions/62799018/… 感谢您的快速回复@VishalA。我尝试了那个问题中的方法,但没有解决问题。 【参考方案1】:

我做了一点实验。

对于输出:

bookdown::word_document2

...我没有找到任何解决方案。

但对于

officedown::rdocx_document

...建设

```r fig.width=5, fig.height=5
knitr::include_graphics("xxx.png") 
```

... 没有任何问题。


补充:

它应该适用于您的任务:

```r
library(imager)
my_pic <- load.image("xxx.png")
asp_rat <- dim(my_pic)[2]/dim(my_pic)[1] #find our aspect ratio

```

```r fig.asp = asp_rat, fig.height = ??, fig.width = ?? #choose the best for your pic
knitr::include_graphics("xxx.png") 
```

看,长宽比被保存了。您应该只为每种情况确定 fig.height/width 。我还没有任何想法...

【讨论】:

谢谢,@manro。是的,fig.width=5fig.height=5 可以更改图形大小。但是,当我从外部导入图形时,我不知道图形的确切高度/宽度比。如果我设置fig.width=Xfig.height=Y,则无法按原样导入图形。 @Xiaochi 从外面?它是什么?带图片的外部文档? 你好@manro,“从外部”只是表示图形是从磁盘导入的,不是在当前R环境中生成的。为了更清楚,我修改了问题,请看一下。非常感谢! @小池看,我纠正了我的答案;) 这个方法效果很好!非常感谢您的友好指导,@manro。

以上是关于如何将图形导入为其原始高度/宽度比?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rmarkdown html 文档中并排时使图形大小(宽度和高度)相同

如何将每个 td 元素的高度设置为其宽度? [复制]

如何将视图(例如标签)的高度/宽度设置为其内容的大小?

获取绘图图形的宽度和高度

Canvas基础

怎么将CAD图形导入PADS中?