Rで作図を高解像度に保存する方法について ーpng(), ggsave() などー

Rでデータ解析と可視化

Rで作図したものを、論文や著書で使用するため、高解像度で保存する方法は?

Rは、データの視覚化にとても便利なツールです。データの詳細な分析や学術論文の掲載時には、作った図を高解像度で保存したいですよね。




1.はじめに 画像のサイズと解像度について

デジタル画像は、画像をピクセルという小さな点の集まりで表現します。ピクセルとは、画像を構成する最小の単位で、ピクセル数が多いほど画像は細かく、精密に表現されます。一方、ピクセル数が少ないと、画像が荒くなります。画像のサイズは、ピクセル単位で表されます。たとえば、800×600ピクセルの画像は、幅が800ピクセル、高さが600ピクセルであることを表します。幅や高さが大きいほど、画像の表示に必要なピクセル数が多くなるため、ファイルサイズが大きくなります。

また、画像の解像度は、1インチあたりに表示されるピクセル数を表します。単位は、dpi(dots per inch)またはppi(pixels per inch)です。一般的なWeb用途では、72dpi〜150dpi程度が使用されますが、印刷物やプレゼンテーションなどの場合は、300dpi以上の解像度が必要になることがあります。解像度が高いほど、画像は鮮明に表示されますが、ファイルサイズが大きくなります。

2. png()を使って、指定したサイズと解像度の画像を作成しよう

Rで、画像のサイズや解像度を指定する図の保存方法の例をこちらに紹介させていただきます。

Rでは、png()関数(PNGで出力)やpdf()関数(PDFで出力)など※を使用して、グラフィックデバイスを作成します。その後にdev.off()関数でグラフィックデバイスを閉じて、そのファイル形式で図を保存ことができます。この方法を使用して、さらに細かい画像の設定を行うことができます。

#irisデータ使用
head(iris) #
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa

png("irisplot_1.png", width = 400, height =400, res = 100) #画像サイズ(400×400 ピクセル)と解像度(100 dpi)を指定
plot(iris$Sepal.Length, iris$Sepal.Width, col=as.numeric(factor(iris$Species)), pch=16,  #irisデータ がく(Sepal)の長さと幅
       main="Sepal Length vs Width by Species", xlab="Sepal Length", ylab="Sepal Width", cex=0.6)
legend("topright", legend = levels(iris$Species), col =1:length(factor(iris$Species)), pch = 16,cex=0.6) 
dev.off() #irisplot_1.png 出力

png("irisplot_2.png", width = 1600, height =1600, res = 400) #画像サイズ(1600×1600 ピクセル)と解像度(400 dpi)を指定
plot(iris$Sepal.Length, iris$Sepal.Width, col=as.numeric(factor(iris$Species)), pch=16,  #irisデータ がく(Sepal)の長さと幅
       main="Sepal Length vs Width by Species", xlab="Sepal Length", ylab="Sepal Width", cex=0.6)
legend("topright", legend = levels(iris$Species), col =1:length(factor(iris$Species)), pch = 16,cex=0.6) 
dev.off() #irisplot_2.png 出力

irisplot_1.png 出力(400×400 pixel, 100 dpi)

irisplot_2.png出力(1600×1600 pixel, 400 dpi)

この二つだと、少しわかりづらいですかね。拡大して並べると、以下のような感じです。

クリアな図を求められている場合には、上右図のように高解像度の画像を作成できます。png()関数以外に、peg()関数:JPGで出力、bmp()関数:BMPで出力 なども同様に可能です。

参考サイト



3. ggsave()を使って、指定したサイズと解像度の画像を作成しよう

また、ggplot2などで作成する図は、ggsave()関数を使用することで、簡単に高解像度の画像を保存することができます。ggsave()関数は、ファイル名、ファイルのフォーマット、および解像度を指定することができます。

library(ggplot2)
myplot <- ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) + geom_point() + theme_bw()
ggsave("myplot.png", plot = myplot, dpi = 100)
ggsave("myplot2.png", plot = myplot, dpi = 400)

ggsaveは、dpi=で解像度を指定すると、デフォルトで保存する画像ファイルのサイズが決定されます。

下の左図がdpi=100(myplot.png)で、右図がdpi=400(myplot2.png)です。

右図が明らかにクリアですよね。

ggsave()では、pngのほかに、”eps”、”ps”、”tex”、”pictex”、”pdf”、”jpeg”、”tiff”、”png”、”bmp”、”svg”、”wmf”(windowsのみ)のファイル形式で保存が可能です。
上記.png同様の手順で、他のファイル形式で解像度等を指定して保存できますので、試してみてください。

今回は、画像の解像度を指定するコードについて記載しました。ぜひご活用ください。
他にも下記のような記事がありますので、見ていただけると嬉しいです。

Rでクラスター分析① ー階層クラスター分析, hclust, dist, シルエット分析, silhouetteー
多くの製品があって、どの製品とどの製品が似ているのか、似ていないのか?などを調べるにはどうすればよいでしょう? 似ているもの同士を集めたり、似ていないものと区別するには、クラスター分析が大変役に立ちます。 例えば、ワインの成分情報か...
Rで相関行列 ーPearsonの相関係数, corrplotの使い方ー
相関係数とは2つの変数間における関係の強弱を表現する指標です。 2つの変数間だけでなく、複数の変数の情報から、それぞれの相関係数を全部知りたい、 そういう時には相関行列で可視化を行い、すべてを確認し、議論を行うことができます。 ...




コメント

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