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同様の手順で、他のファイル形式で解像度等を指定して保存できますので、試してみてください。
今回は、画像の解像度を指定するコードについて記載しました。ぜひご活用ください。
他にも下記のような記事がありますので、見ていただけると嬉しいです。
コメント