ggsave()で高画質かつ高解像度のグラフを保存する

R

R Studioで描いたグラフ画像を一般的な方法で保存する(Export)と画像サイズが小さいだけでなく解像度が低く,また時としていびつな形で保存されてしまいます.とくにJournalへの投稿では基本的に300dpi以上を求められると思うので対応できません.

ggplot2パッケージにはこの問題を解決するための便利な方法としてggsaveが提供されており,ggsaveを使用することで作成したプロットを高画質かつ高解像度のグラフとして保存することができます.

RStudioのexport使用例

例として適当なグラフを作成します.

# ライブラリの読み込み
library(tidyverse)

# データ読み込み
df <- data.frame(
  med = c("Sample1", "Sample2", "Control"),
  bp = c(120, 150, 180)
  )

# プロットの作成
p <- ggplot(data = df, aes(x = med, y = bp, fill = med)) + 
  geom_bar(stat="identity") + 
  scale_fill_brewer(palette = "Spectral")

# プロットの表示
p

R studioからエクスポートしたプロット図(500*500px)がこちら

ggsaveの使用例

続いてggsaveを使用してPNG形式で保存してみます.

ggsave(
  "fig/R-plot.png",
  plot = p,
  dpi = 300, 
  width = 5, 
  height = 5
)

こちらで保存した画像は300dpiで指定しており,非常に高解像度です.

拡大してもこう.

サイズなどの指定が必要な場合には引数(argument)を設定しましょう.

使用方法

引数使用例説明
filenamefilename = “test.png”グラフを保存する画像ファイル名と拡張子の設定,必要に応じてtifなどに
pathpath = “保存パス”グラフイメージファイルを保存するパスを指定します,指定しない場合はR Studioで設定されたデフォルトのワーキングディレクトリに保存されます
dpidpi = 300グラフ画像解像度の指定 (*デフォルト:300)
widthwidth = 数値保存するグラフ画像の幅 (*単位:units) (※特に必要ない場合は指定しなくても問題なし)
heightheight = 数値保存するグラフ画像の高さ (*単位:units) (※特に必要ない場合は指定しなくても問題なし)
units単位 = “cm”保存するグラフ画像の単位の指定 ミリメートル / センチメートル / インチ … (※特に必要ない場合は指定しなくても問題なし)
limitsizelimitsize = TRUET/F: TRUEに設定するとggsaveで保存できる画像の最大サイズは50×50インチになる (*デフォルト: TRUE)

TIFF形式で保存する場合

TIFF(*.tif, *.tiff)で保存する場合にはそのままだとファイルサイズがバカでかくなるので圧縮することをおすすめします(非可逆).

具体的にはcompressionで指定しましょう

compression = c("none", "rle", "lzw", "jpeg", "zip", "lzw+p", "zip+p")

おすすめはlzwです.先程のggsaveでcompression = “lzw”とすればOK.

ggsave(
	"R-plot.tiff", 
	plot = p, 
	dpi = 300,
	compression = "lzw",
	width = 5, 
	height = 5
	)

この形式であれば各種の投稿にも耐えうるはずです.

背景が透明になってしまうとき

PNGなど透過がある際には ggsave で保存した際に背景が透明になってしまう.その際は引数に bg = “white” を追加すれば良い.

ggsave(
	"R-plot.png", 
	plot = p, 
	dpi = 300,
	width = 5, 
	height = 5,
	bg = "white"
	)

この際の “white” はもちろんHTMLカラーコード(例:#FFFFFF)でもOK.

参照
Save a ggplot (or other grid object) with sensible defaults — ggsave
ggsave() is a convenient function for saving a plot. It defaults tosaving the last plot that you displayed, using the si...

コメント

タイトルとURLをコピーしました