はじめに

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()

何も設定をしないと、上記のようなグラフになります。
よく登場するグラフかと思います。
背景がグレーで文字が黒です。
「グレーなのでwordやpptに貼りたくはないな」という印象です。

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行追加するだけで、白黒のはっきりしたグラフになります。
これであれば、レポートなどでも使いやすいと思います。
下記では、ベースが黒で、文字や枠線が白になったグラフを作成したいと思います。

色違いのグラフ

正直、用途はあまりないのですが、グラフを黒くしてみました。
予め決められた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は付けなくても平気な箇所もありますが、一応つけています。

別色のグラフ

colorを最初に"black"と指定してますが、例えば"midnightblue"にすると濃い青のグラフが作れます。

color <- "midnightblue"

まとめ

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