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

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)


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

スポンサーリンク
価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。