web-dev-qa-db-ja.com

マークダウンにknitrを使用してローカル画像のサイズを設定する方法は?

.Rmdファイルに含めるローカルイメージがあり、そのファイルをknitに変換して、PandocでHTMLスライドに変換します。 この投稿 ごとに、これはローカル画像を挿入します:
![Image Title](path/to/your/image)

このコードを変更して画像サイズも設定する方法はありますか?

123
Adam Smith

たとえば、pngパッケージを使用して画像を読み取り、gridパッケージのgrid.rasterを使用して通常のプロットのようにプロットすることもできます。

```{r fig.width=1, fig.height=10,echo=FALSE}
library(png)
library(grid)
img <- readPNG("path/to/your/image")
 grid.raster(img)
```

この方法を使用すると、画像のサイズを完全に制御できます。

89
agstudy

質問は古いですが、まだ多くの注目を集めています。既存の回答は古くなっているため、ここに最新のソリューションを示します。

ローカル画像のサイズ変更

knitr 1.12 の時点で、関数include_graphicsがあります。 ?include_graphics(エンファシス鉱山)から:

この関数を使用する主な利点は、knitrがサポートするすべてのドキュメント形式で機能するという意味で移植性があるため、たとえばLaTeXまたはMarkdown構文を使用する必要があるかどうかを考える必要がないことです。 、外部画像を埋め込みます。 out.widthout.heightなど、通常のRプロットで機能するグラフィック出力に関連するチャンクオプションも機能します。

例:

```{r, out.width = "400px"}
knitr::include_graphics("path/to/image.png")
```

利点:

  • Over agastudy's answer :外部ライブラリや画像の再ラスタリングの必要はありません。
  • オーバー シュルティカプールの答え :HTMLを手動で記述する必要はありません。また、画像は自己完結型のファイルに含まれています。

生成された画像を含める

チャンクで生成(ただし含まれない)のプロットへのパスを作成するには、opts_current$get("fig.path")(figureディレクトリへのパス)とopts_current$get("label")(ラベル現在のチャンクの)が役立つ場合があります。次の例では、fig.pathを使用して、最初のチャンクに生成された(表示されていない)2つのイメージの2番目を含めます。

```{r generate_figures, fig.show = "hide"}
library(knitr)
plot(1:10, col = "green")
plot(1:10, col = "red")
```

```{r}
include_graphics(sprintf("%sgenerate_figures-2.png", opts_current$get("fig.path")))
```

Figureパスの一般的なパターンは[fig.path]/[chunklabel]-[i].[ext]です。ここで、chunklabelはプロットが生成されたチャンクのラベル、iはプロットインデックス(このチャンク内)およびextはファイル拡張子です(デフォルトでは、RMarkdownドキュメントのpng)。

165
CL.

更新されていない答え:knitr 1.17では、単に使用できます

![Image Title](path/to/your/image){width=250px}
69
InspectorSands

以下に、イメージを再作成せずにファイルを自己完結させておくいくつかのオプションを示します。

画像をdivタグで囲む

<div style="width:300px; height:200px">
![Image](path/to/image)
</div>

スタイルシートを使用する

test.Rmd

---
title: test
output: html_document
css: test.css
---

## Page with an image {#myImagePage}

![Image](path/to/image)

test.css

#myImagePage img {
  width: 400px;
  height: 200px;
}

複数の画像がある場合、この2番目のオプションにnth-child擬似セレクターを使用する必要があるかもしれません。

32
Nick Kennedy

HTMLに変換する場合、次を使用してHTML構文を使用して画像のサイズを設定できます。

  <img src="path/to/image" height="400px" width="300px" />

または任意の高さと幅を指定します。

19
Shruti Kapoor

今日同じ問題があり、PDFに編み込むときにknitr 1.16で別のオプションを見つけました(これにはpandocがインストールされている必要があります)。

![Image Title](path/to/your/image){width=70%}

この方法では、適切なサイズを見つけるために試行錯誤が必要になる場合があります。特に便利なのは、2つのイメージを並べて配置することをよりきれいなプロセスにするためです。例えば:

![Image 1](path/to/image1){width=70%}![Image 2](path/to/image2){width=30%}

創造性を発揮し、これらのいくつかを並べてスタックし、必要に応じてサイズを調整できます。 https://rpubs.com/RatherBit/90926 をご覧ください。

7
Taylor Pellerin

Knitr :: include_graphicsソリューションは、図のサイズ変更にうまく機能しましたが、サイドバイサイドのサイズ変更された図を生成するためにそれを使用する方法を見つけることができませんでした。 この投稿 はそうするのに役立ちました。

4
S.M.

私のために働いた別のオプションは、次のようにknitr::include_graphics()のdpiオプションで遊ぶことです:

```{r}
knitr::include_graphics("path/to/image.png", dpi = 100)
```

...確かに(数学を行わない限り)チャンク内の次元を定義することと比較して試行錯誤ですが、おそらくそれは誰かを助けるでしょう。

3
Jan Alleman