13.1 グラフをクロップする

チャンクフックknitr::hook_pdfcrop() は PDF やその他の種類の画像ファイルをクロップ, つまりグラフから余分な余白を削除するのに使えます. これを有効にするには, コードチャンク内で knit_hooks$set() を使って対応するチャンクオプションをオンに設定してください. これが例です.

knitr::knit_hooks$set(crop = knitr::hook_pdfcrop)

そうすると, チャンクオプション crop = TRUE を使ってグラフをクロップできます.

フック関数 hook_pdfcrop() は内部プログラム pdfcrop を呼び出して PDF ファイルをクロップします. このプログラムは通常 LaTeX の配布パッケージ (例えば TeX Live や MikTeX) に同梱されています. システムでこれが使用可能かどうかは次のようにして確認できます.

# 返り値が空でないなら使用可能
Sys.which("pdfcrop")
##                pdfcrop 
## "/home/ks/bin/pdfcrop"

LaTeX 配布パッケージの TinyTeX (1.2節参照) を使っていて, pdfcrop があなたのシステムで利用できないときは, tinytex::tlmgr_install('pdfcrop') でインストールできます.

訳注

knitr::hook_pdfcrop の使用には ghostscript も必要になります. 環境によっては別途, 手動でインストールする必要があるかもしれません.

PNG や JPEG といった PDF でないグラフ画像ファイルに対しては, このフック関数は R パッケージの magick (Ooms 2021b)を呼び出してクロップします. この R パッケージがインストールされているか確かめておきましょう. 図13.1はクロップされていないグラフで, 図 13.2はクロップされた同じグラフです.

クロップされていないグラフ

図 13.1: クロップされていないグラフ

クロップされたグラフ

図 13.2: クロップされたグラフ

参考文献

———. 2021b. Magick: Advanced Graphics and Image-Processing in r.