本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:保存前にサイズとDPIをそのままプレビューできる「ggview」パッケージの紹介

ggplot2パッケージのグラフ保存は、解像度の調整や出力サイズの設定など意外と面倒です。そんな面倒な作業を簡単にしてくれるのが、ggviewパッケージです。canvas()コマンドを使うと、保存時に指定するサイズやDPIのまま、プレビューできるので便利です。

具体的には、「canvas」コマンドでサイズ・DPI・背景色などをプレビューで確認し、「save_ggplot」コマンドでファイルに保存する、という手順です。

パッケージバージョンは0.2.2。Windows 11のR version 4.4.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

# パッケージのインストール
install.packages("ggview")
# パッケージの読み込み
library("ggview")
# その他必要なパッケージ
library("tidyverse")
スポンサーリンク

コマンド例

詳細はコメント、パッケージのヘルプを確認してください。

保存時のサイズ・DPIのままプロットをプレビュー:canvasコマンド

オプション意味初期値
widthプロットの幅をunits単位で指定;未指定の場合は現在のグラフィックデバイスのサイズを使用
heightプロットの高さをunits単位で指定;未指定の場合は現在のグラフィックデバイスのサイズを使用
unitswidth・heightの単位を指定;”in”、”cm”、”mm”、”px”のいずれか“in”
dpiプロットの解像度を指定;数値のほか”retina”(320)、”print”(300)、”screen”(72)も指定可能;ピクセル単位への変換時にのみ適用される300
scale拡大縮小倍率を指定1
bg背景色を指定;NULLの場合はテーマのplot.backgroundの塗りつぶし色を使用“white”
# プロットを作成
p <- ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  ggtitle("Weight vs MPG")

# 4×3インチ、300dpiでプレビュー
p + canvas(width = 4, height = 3, units = "in", dpi = 300)

なお、RStudioでcanvas()を実行してプレビューした画像をそのまま保存したい場合は、下記の手順で保存できます。

  1. プロットの出力コマンドとcanvas()を実行する。
  2. プロットがRStudioの「Viewer」パネルに表示される。
  3. 「Viewer」パネルのメニューから「Show in new window」をクリックする。
  4. ブラウザが起動し、グラフが表示される。
  5. グラフ上で右クリックし、「名前を付けて画像を保存」を選択して保存する。

キャンバス設定を引き継いでファイルに保存:save_ggplotコマンド

オプション意味初期値
plot保存するggplotオブジェクトを指定
file保存先のファイルパスを指定
device使用するデバイスを指定;デバイス関数、または”eps”、”ps”、”tex”、”pdf”、”jpeg”、”tiff”、”png”、”bmp”、”svg”、”wmf”(Windowsのみ)のいずれかの文字列;NULLの場合はファイル名の拡張子から自動判定されるNULL
scale拡大縮小倍率を指定NULL
widthプロットの幅をunits単位で指定;未指定の場合は現在のグラフィックデバイスのサイズを使用NULL
heightプロットの高さをunits単位で指定;未指定の場合は現在のグラフィックデバイスのサイズを使用NULL
unitswidth・heightの単位を指定;”in”、”cm”、”mm”、”px”のいずれかNULL
dpiプロットの解像度を指定;数値のほか”retina”(320)、”print”(300)、”screen”(72)も指定可能NULL
limitsizeTRUEの場合、ピクセル単位の指定ミスを防ぐため、50×50インチを超える画像の保存を行わないTRUE
bg背景色を指定;NULLの場合はテーマのplot.backgroundの塗りつぶし色を使用NULL
create.dir保存先ディレクトリが存在しない場合、TRUEなら自動作成し、FALSEならエラーとする(対話セッションでは作成確認が表示される)FALSE
# キャンバス設定付きのプロットを作成
p <- ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  ggtitle("Weight vs MPG") +
  canvas(5, 4)

# 保存先の一時ファイルを作成
out_png <- tempfile(fileext = ".png")

# 幅・高さを明示しなくてもキャンバス値が適用される
save_ggplot(p, out_png)

# dpiを上書きしたい場合
save_ggplot(p, out_png, dpi = 600)


この記事が誰かの役に立ちますように。

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.