library(tidyverse)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_smooth(method = "lm", formula = y ~ x) +
theme_gray(paper = "cornsilk", ink = "navy", accent = "tomato")
はじめに
Rのプロットでおなじみggplot2
がバージョン4.0.0にアップデートされたようだ。
ここでは簡単にどのような変更がなされたのかを確認したい。
詳細については以下などを参照。
テーマの色遣い
一番に目を引いたのはテーマの色に関するアップデートだ。
theme_xxx()
系の引数にpaper
やink
、accent
が追加されている。
公式のサンプルコードを見てみる。
ご覧いただいてわかるように、背景がcornsilk(とうもろこしの髭の色らしい…)、文字や点がネイビー、直線がトマト色になっている。
要は、背景色、前景色、アクセントカラーの設定がtheme_xxx()
から設定できるようになったということだ。
ggplot(mpg, aes(class, displ)) +
geom_boxplot(aes(colour = from_theme(accent))) +
theme(
geom = element_geom(accent = "tomato", paper = "cornsilk")
)
上記のように、from_theme(accent)
でtheme()
内のgeom
よりアクセントカラーを参照できる。
今回の例では一度しか参照していないが、何度も色を設定する際にtheme()
で設定しておけば効率的だと思う。
自分でもなにか適当に書いてみる。
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(size = 3) +
geom_smooth(aes(fill = from_theme(accent)), method = "lm", formula = y ~ x, alpha = 0.3) +
theme_bw(paper = "black", ink = "white") +
theme(
geom = element_geom(
accent = "magenta"
) )
なんだかキモいのは置いておいて、背景が黒、文字が白、回帰直線がマゼンタになっている。
図形の枠線
またまた公式からの引用。
ggplot(faithful, aes(waiting)) +
geom_histogram(bins = 30, colour = "black") +
geom_freqpoly(bins = 30) +
theme(geom = element_geom(
bordertype = "dashed",
borderwidth = 0.2,
linewidth = 2,
linetype = "solid"
))
上記のように、theme()
内でgeom
を指定することで、図形の枠線を一括で設定できる。境界線としてbordertype
、borderwidth
、また、線に関してはlinewidth
、linetype
を設定できる。
先ほどの色の設定と組み合わせると、theme()
内でかなり多くの設定ができるようになりそう。
ggplot(faithful, aes(waiting)) +
geom_histogram(aes(fill = from_theme(accent)), bins = 30, colour = "black") +
geom_freqpoly(bins = 30) +
theme_bw(paper = "lightyellow", ink = "darkgreen") +
theme(geom = element_geom(
bordertype = "dashed",
borderwidth = 0.2,
linewidth = 2,
linetype = "solid",
accent = "tomato"
))
今回は書かないが、地図の方でもいろいろ設定できると思うので、GISと絡めて使うのが楽しみだ。
おわりに
他にもいろいろアップデートはあるようだが、今回はggplot2
のバージョン4.0.0で追加されたテーマの色遣いと図形の枠線について見てみた。
なにやら結構重大な変更になるみたいなことを若干耳にしていたが、今回見てみたところ安全に使えそうな気がする。
今後もいろいろ試していきたいと思う。