はじめに

deepblueインターン生の中山です。
今回は研究室の輪読で、真っ黒のグラフ作ったらかっこいいかな~と思い、tidyverseのggplotで黒で統一した色違いのグラフを作成したので、備忘録として残しておきます。

今回はirisのデータを利用して、散布図の色違いを作成してみたいと思います。
通常の散布図を示して、その後色違いのグラフを示したいと思います。
コードの文字色が微妙ですが、気にしないでください...

defaultの可視化

まず、ggplotのthemeの指定を一切せずに、可視化をしてみます。
コードとグラフは以下のようになります。

library(tidyverse)
iris %>% 
  ggplot(aes(y = Sepal.Length,
             x = Petal.Width,
             shape = Species,
             color = Species,)) + 
  geom_point()

何も設定をしないと、上記のようなグラフになります。
よく登場するグラフかと思います。
背景がグレーで文字が黒です。
論文やレポートなどでは使いにくいかなという印象です。

theme_bw()で可視化

ggplotにはthemeが予め設定されているものがあるので、割と見かけるtheme_bw()で可視化してみます。
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行追加するだけで、白黒のはっきりしたグラフになります。
これであれば、レポートなどでも使いやすいと思います。
今回のblogでは、これの真逆で基本黒で、文字などが白になったグラフを作成したいと思います。

色違いのグラフ作成

正直、用途はあまりないのですが、グラフを黒くしてみました。
予め決められたthemeが存在しないため、地道に設定をしていきます。
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はなくて問題ない場所もありますが、一応つけています。
colorを最初に'black'と指定してますが、例えば'midnightblue'にすると濃い青のグラフが作れます。

まとめ

以上で、ggolotのグラフの色違いを作成するコードについては終わりです。
何かの為になれば幸いです。

(著:中山 翔太

関連記事