Pda*_*awg 15 latex r rstudio knitr r-markdown
我想主要将.Rmd文件导出为latex pdf.
这是我目前正在使用的代码
```{r ,fig.cap="caption",fig.env='figure', fig.width=10, fig.height=10,echo=FALSE, results='asis', warning=FALSE, strip.white=TRUE}
library(png)
library(grid)
img <- readPNG("filepath/overview.png")
grid.raster(img)
```
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已经在使用strip.white=TRUE&fig.env='figure'但它们似乎不起作用..PNG文件在图像上方或下方没有任何(白色)间距.
我知道我可以直接使用乳胶并实现我想要的,但我希望能够在Word中重现这一点,如果需要的话.同样在Word中,图像上方和下方有半页空白空间.
任何帮助将不胜感激.谢谢
您的问题与 knitr 无关,而是与光栅图像有关,它会产生白色边缘以防止其变形。例如,如果您键入,? graphics::plot.raster您将看到asp设置为 1的参数保留来自栅格的比率。在标准 R 输出中绘制您的图像,您将看到空白部分,如果您调整窗口,这些白色部分将被删除。所以你需要的是检查你的图像尺寸,然后fig.asp在 knitr 中使用一个比率来生成一个框架,让你的图像适合。
url <- "https://cdn.pixabay.com/photo/2017/11/15/20/27/diamonds-2952447_960_720.png"
image<- image_read(url)
print(image)
Run Code Online (Sandbox Code Playgroud)
这返回
format width height colorspace filesize
1 PNG 960 600 sRGB 762423
Run Code Online (Sandbox Code Playgroud)
您也可以使用 readPNG()
curl::curl_download(url, "image.png")
image <- png::readPNG("image.png",info=TRUE)
attr(image,"info")
Run Code Online (Sandbox Code Playgroud)
从 knitr选项我们有参数fig.asp
fig.asp: (NULL; numeric) 绘图的纵横比,即高/宽之比;当指定 fig.asp 时,绘图的高度(块选项 fig.height)由 fig.width * fig.asp 计算
所以这里我们计算height/width= 0.62。
在这里,我使用作为第一个块中设置的opts.label参数传递的方形输出,这将在图像宽时放大问题。
---
title: "Crop image ?"
output: word_document
---
```{r echo=FALSE}
require(knitr)
library(magick)
opts_template$set(squarefigure = list(fig.height = 6, fig.width = 6))
```
=lorem()
```{r opts.label ="squarefigure", echo=FALSE, fig.cap = "plot without setting the right raster output size"}
url <- "https://cdn.pixabay.com/photo/2017/11/15/20/27/diamonds-2952447_960_720.png"
img <- image_read(url)
img%>%grid.raster()
```
=lorem()
```{r opts.label ="squarefigure", fig.cap = "plot with correct margin, square size", fig.asp=0.62}
img%>%grid.raster()
```
=lorem()
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个图像有一个空白边缘,而第二个图像正确显示。
我知道问题中没有问 LATEX 的答案,但如果有些读者正在使用 knitr 或 sweave 来生成 LATEX 输出,那么下面将展示如何在 knitr 中修剪图像。使用的参数是
trim={<left> <lower> <right> <upper>,单位可以是 cm mm in ...(LATEX长度单位之一)。要传递这些参数,您可以out.extra在块选项中使用该参数。请注意,使用fig.asp像上面这样的图像参数也可以使用。
\documentclass{article}
\usepackage{graphicx}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\blindtext
<<r1, echo=FALSE >>=
library(knitr)
library(ggplot2)
library(magick)
# download image to disk
url <- "https://cdn.pixabay.com/photo/2017/11/15/20/27/diamonds-2952447_960_720.png"
curl::curl_download(url, "image.png")
img <- image_read(png::readPNG("image.png"))
plot(img)
@
\blindtext
\newpage
\blindtext
<<r2, echo=FALSE,out.extra='trim={0 5cm 0 5cm},clip' >>=
plot(img)
@
\blindtext
\end{document}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的博客,也用于理解像fig.retina和out.width
最后的strip.white论点是删除空白的代码行。它不会调整您的图像大小。
strip.white: (TRUE;logical) 是否删除输出中源块开头或结尾的白线
| 归档时间: |
|
| 查看次数: |
5213 次 |
| 最近记录: |