0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rで「あてはめ」ができるまでの道筋 ggplot2 ②

Last updated at Posted at 2023-10-15

ggplot②

さて、ggplot2 の第2回です。今回はグラフの修飾やラベル、タイトルなどの書き方から配色に至るまでを説明してきます。今回もDr.Greg Martinの動画で勉強したことが中心です。

themeレイヤ

復習ですが、以下のようにggplotレイヤ + geometryレイヤ が揃っていれば、とりあえずグラフは描けるのでした。以下ではデータセットBOD を用いますが、BOD はRの組み込みのデータセットなので、ダウンロードすることなく利用することができます。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5)

そこにテーマ(themeレイヤ)を付け加えたいと思います。
まずはtheme_bwレイヤです。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5) + 
	theme_bw()

結果を示します。上がtheme_bw()なし(つまりデフォルト、theme_gray)、下がtheme_bw()ありです。

1-1.png
2-1.png

このようにthemeレイヤは背景色を変更するなどして、全体の雰囲気を変える役割を果たします。
themeレイヤにはtheme_bw()の他にも

  • theme_gray() (デフォルト)
  • theme_dark()
  • theme_classic()
  • theme_light()
  • theme_linedraw()
  • theme_minimal()
  • theme_void()
があります。 以下、一通り試してみました

theme_classic()です(↓)
classic
theme_dark()です(↓)
dark
theme_light()です(↓)
light
theme_lightdraw()です(↓)
lightdraw
theme_minimal()です(↓)
minimal
theme_void()です(↓)
void

詳しくは公式チートシートを参照してください。

ラベル

続いてラベルです。labsレイヤでx軸、y軸の変数についての説明、およびグラフについての説明を加えます。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5) + 
	labs(x = "Time", y = "demand", title="BOD" )

2-2.png
少し文字が小さいですね。文字の大きさを変えるには、以下のようにthemeレイヤで大きさを指定します。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5) + 
	theme_gray(base_size=20) + 
	labs(x = "Time", y = "demand", title="BOD")

以下の通りです。上図と見比べてみてください。ラベルだけではなく、すべての文字が大きくなっています。
2-3.png

配色

手動で配色

次に配色です。点や曲線、ビンなどの色を個別に指定して色付けする方法を考えてみましょう。
まず、上記の散布図に色をつけてみます。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5, color="red", alpha=0.5) +
	theme_minimal()

こんな感じです。
2-6.png
色が濃すぎて見にくい場合、アルファ値を設定して、透明化することもできます。
アルファ値とは不透明度です。0〜1 の値を取り、0が完全透明、1が完全不透明です。

BOD %>%
ggplot(aes(Time, demand)) + 
	geom_point(size = 5, color="red", alpha=0.5) +
	theme_minimal()	

2-7.png

color とfill

説明のため、以下のような適当なデータのヒストグラムを描いてみたいと思います。

d <- c(1, 3, 3, 1, 2, 4, 2, 2, 2)

ggplot2に代入するために、data.frame に変換しておきます。

ddf <- as.data.frame(d)

このデータのヒストグラムです。カラーコードを2つ指定していることに注意してください。

ddf %>%
	ggplot(aes(d)) + 
	geom_histogram(binwidth=1, color="#3E9DA5", fill="#FADA0A")

2-8.png

ここで、color="#3E9DA5" は枠線の色、fill="#FADA0A" はビンの内部の色を指定しています。
この例に限らず、「colorは線、fillは内部」と覚えておくと応用が効くでしょう。

palette を利用

さて、ここからは個別の色付けではなく、palette を用いて体系的に色付けすることを考えます。

ここではbuilt-in データのmpg を用います。このデータセットについて軽く説明しておきます。data() の説明によると"Fuel economy data from 1999 to 2008 for 38 popular models of cars"とあります。すなわち1999年から2008年の10年間の人気38車種の燃費データです。最初の数行を表示すると以下の通りです。

> head(mpg)
# A tibble: 6 × 11
  manufacturer model displ  year   cyl trans      drv     cty   hwy fl    class  
  <chr>        <chr> <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
1 audi         a4      1.8  1999     4 auto(l5)   f        18    29 p     compact
2 audi         a4      1.8  1999     4 manual(m5) f        21    29 p     compact
3 audi         a4      2    2008     4 manual(m6) f        20    31 p     compact
4 audi         a4      2    2008     4 auto(av)   f        21    30 p     compact
5 audi         a4      2.8  1999     6 auto(l5)   f        16    26 p     compact
6 audi         a4      2.8  1999     6 manual(m5) f        18    26 p     compact

ご覧の通りたくさんの列がありますが、この中でdispl(排気量)、drv(駆動輪)を説明変数として、目的変数hwy(高速道路での燃費)を説明するグラフを作ることを試みます。すると、説明変数が2つあるため、横軸だけでは表現しきれません。そこで、displを横軸にして、drvの違いは点の色で表現していこうと思います。

まずは、デフォルトの設定から。

mpg %>%
	ggplot(aes(displ, hwy, color=drv))	+
	geom_jitter(size=5) + 
	theme_minimal()

2-4.png

これでも十分に表現できているのですが、もし好みに合わなければ色を変えることができます。たとえば"YlOrRd"というパレットを利用するなら、以下のようにします。(このパレット、おそらくですがYellow-Orange-Redの意味と思われます)

mpg %>%
	ggplot(aes(displ, hwy, color=drv))	+
	geom_jitter(size=5) + 
	scale_color_brewer(palette = "YlOrRd") +
	theme_minimal()

2-5.png

パレットはその他にもたくさんあります。
以下でご確認ください。

> library(RColorBrewer)
> display.brewer.all(colorblindFriendly=TRUE)

ここではscale_color_brewer()を用いましたが、同様の以下の関数があります。
線の色を変えるには

  • scale_color_brewer()
  • scale_color_manual()

領域の色を変えるには

  • scale_fill_brewer()
  • scale_fill_manual()

前項の「color とfill」を応用すれば理解しやすいですね。

参考文献

Data visualisation using ggplot with R Programming : Dr.Greg Martin の動画
Cheatsheet : (公式)チートシートです。

トップページはこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?