はじめに
deepblueインターン生の中山です。
以前「真っ黒のグラフを作成してみようかな」と思い、黒で統一した色違いのグラフをggplotで作成致しました。今回はその備忘録としてblogを残しておきます。今回はirisのデータを利用して、散布図の色違いを作成してみます。最初に通常の散布図を示し、その後色違いのグラフを示したいと思います。
plotのグラフ
Rのデフォルト関数であるplot
を用いて、散布図の作成をします。
plot(iris[c("Petal.Width", "Sepal.Length")])
# plot(iris$Petal.Width, iris$Sepal.Length) # こちらでも可
かなり見ずらいです。色がモノクロで、形状も〇で統一されており、どのプロットがどのクラスに該当するのか判別できません。
ggplotのグラフ
ここでは、ggplotを用いたグラフについて説明します。
wikipediaより:
ggplot2は、 統計プログラミング言語Rのデータ視覚化パッケージである。2005年にHadkey Wickhamによって作成されたggplot2は、リーランド・ウィルキンソンのGrammar of Graphicsの実装である。これは、グラフをスケールやレイヤーなどのセマンティックコンポーネントに分割するデータ視覚化の一般的なスキームである。
ggplotのgeom_plot()で可視化
まず、ggplotのtheme
を指定せずに、可視化します。
コードとグラフは以下のようになります。
library(tidyverse)
iris %>%
ggplot(aes(y = Sepal.Length,
x = Petal.Width,
shape = Species,
color = Species,)) +
geom_point()
theme
を設定しないと、上記のグラフとなります。背景がグレーで文字が黒です。プロットの色や形状はSpecies
で指定されているため、デフォルトのplot
よりは見やすくなっています。背景がグレーなので「wordやpptに貼りたくはないな」という印象です。
theme_bw()で可視化
ggplotにはtheme
が設定されております。今回はその中でも人気なtheme_bw()
で可視化してみます。theme
は他にも数多くあるので、ggplot2のテーマはどれを使うべきかなどを参考にしてみてください。
iris %>%
ggplot(aes(y = Sepal.Length,
x = Petal.Width,
shape = Species,
color = Species,)) +
theme_bw() +
geom_point()
白黒のはっきりしたグラフになっています。先のグラフとの差分は、theme_bw()
があるかないかです。1行追加するだけで、かなり見やすくなるので嬉しいです。このグラフであれば、プレゼン資料でも使いやすいかと思います。
色違いのグラフ
上記では、ベースが白で、文字や枠線が黒のグラフを作成しました。一方本節では、ベースが黒で、文字や枠線が白のグラフを作成したいと思います。
正直、用途はほとんどないため、参考程度に見ていただければと思います。予め決められたtheme
は存在しないため、地道に設定していきます。1つずつ設定する事で、細かな色の設定の勉強にはなるかもしれません。
ggplotの設定については、theme functionに列挙されています。
color <- "black"
iris %>%
ggplot(aes(y = Sepal.Length,
x = Petal.Width,
shape = Species,
color = Species,)) +
geom_point() +
theme(rect = element_rect(colour = color, fill = color),
text = element_text(color = "white"),
plot.background = element_rect(colour = color, fill = color),
panel.background = element_rect(colour = color, fill = color),
panel.border = element_rect(fill = NA, colour = "white", size = 1),
panel.grid.major = element_line(colour = "grey60"),
panel.grid.minor = element_line(colour = "grey30"),
legend.key = element_rect(colour = color, fill = color),
axis.text = element_text(colour = "white"),
)
パラメータの説明
簡単にthemeの中で利用したパラメータの説明をすると、
rect
: rectangle(矩形)の略で、plotの中の四角いもの全般の色を設定しています。text
: plotの中の文字全般の色を設定しています。plot.background
: plotの背景の事で、グラフや凡例以外の色が変わります。panel.background
: plotの中のグラフ部分の背景色を設定しています。panel.border
: グラフの枠の設定です。ただ上塗りなので、fill = NAにしておかないと上から色が塗られてしまいます。panel.grid.major
: メインの格子色を設定しています。panel.grid.minor
: サブの格子色を設定しています。legend.key
: 凡例のkey(〇△□)の設定をしています。axis.text
: x軸、y軸の数値の色を設定しています。
colour
は設定する必要のない箇所もありますが、念のため設定しております。また、グラフによっては、line
を指定した方が望ましいです。
先日、theme
を細かく設定した記事を書いたので、良かったら下記も参考にしてください。
(【R・mvtnorm・ggplot】多変量正規分布によるクラス分類の人工データ発生と可視化)
別色のグラフ
colorを最初に"black"
と指定してますが、例えば"midnightblue"
にすると濃い青のグラフが作れます。
color <- "midnightblue"
まとめ
以上で、ggolotのグラフの色違いを作成するコードについては終わりです。
色設定などの参考になれば幸いです。