.Rmdファイルを主にラテックス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)
```
ご覧のとおり、私はすでにstrip.white=TRUE
&fig.env='figure'
を使用していますが、機能していないようです。 .PNGファイルには、画像の上または下に(白い)スペースがありません。
ラテックスを直接使用して目的を達成できることはわかっていますが、必要に応じてこれをWordで再現できるようにしたいと考えています。また、Wordでは、画像の上下に半ページの空きスペースがあります。
どんな助けでも大歓迎です。ありがとう
問題はknitrではなく、ラスターイメージに関連しています。ラスターイメージは、歪まないように白いエッジを生成します。たとえば、? graphics::plot.raster
と入力すると、asp
引数を1に設定すると、ラスターからの比率が保持されます。 画像を標準のR出力にプロットすると、空白の部分が表示されます。ウィンドウを調整すると、それらの白い部分が削除されます。したがって、必要なのは、画像のサイズを確認してから、knitrでfig.asp
比を使用して、画像が収まるフレームを作成することです。
url <- "https://cdn.pixabay.com/photo/2017/11/15/20/27/diamonds-2952447_960_720.png"
image<- image_read(url)
print(image)
これは戻ります
format width height colorspace filesize
1 PNG 960 600 sRGB 762423
ReadPNG()を使用することもできます
curl::curl_download(url, "image.png")
image <- png::readPNG("image.png",info=TRUE)
attr(image,"info")
Knitrから options パラメータfig.asp
があります
fig.asp:(NULL;数値)プロットのアスペクト比、つまり高さ/幅の比率。 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()
ご覧のとおり、最初の画像には空白のエッジがあり、2番目の画像は正しく表示されています。
質問でLATEXの答えが尋ねられなかったことは知っていますが、一部の読者がニットまたはスウィーブを使用してLATEX出力を生成している場合は、以下にニットで画像をトリミングする方法を示します。使用される引数はtrim={<left> <lower> <right> <upper>
であり、単位はcm mm in ...(LATEX nit の長さの1つ)です。これらの引数を渡すには、チャンクオプションで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}
Here は、fig.retina
やout.width
などの引数を理解するための優れたブログです。
最後に、strip.white
引数は、コードの空白行を削除することです。画像のサイズは変更されません。
strip.white:(TRUE;論理)出力のソースチャンクの最初または最後の白い線を削除するかどうか