グラフの色を変更する
Text Update: 11/08, 2018 (JST)

ggplot2におけるデフォルトの配色は綺麗ですが、最初に使われるの2色が赤系と緑系になっており色覚異常がある場合には見分けにくい色の組み合わせになっています( 出典 )。このようなケースを考慮して色を変える場合に、様々なカラーパレットを定義しているRColorBrewerパッケージを用いてみましょう。

 

Packages and Datasets

本ページではR version 3.4.4 (2018-03-15)の標準パッケージ以外に以下の追加パッケージを用いています。
 

Package Version Description
ggthemes 4.0.1 Extra Themes, Scales and Geoms for ‘ggplot2’
RColorBrewer 1.1.2 ColorBrewer Palettes
tidyverse 1.2.1 Easily Install and Load the ‘Tidyverse’

 
また、本ページでは以下のデータセットを用いています。
 

Dataset Package Version Description
mtcars datasets 3.4.4 Motor Trend Car Road Tests

 

パレット一覧

利用できるパレットはRColorBrewer::display.brewer.all関数で確認することができます。左側の文字列がパレット名になります。
 

RColorBrewer::display.brewer.all()

 

パレットを変更する

線色や点色のパレットを変更する

グラフの線や色の指定はcolourオプションですので、colourオプションが利用するパレットを変えるにはggplot2::scale_colour_brewer関数を用います。

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = hp, y = mpg, colour = as.factor(cyl))) + 
    ggplot2::geom_point(size = 2)

 
パレット一覧から利用したいパレットを選んでパレット名をpaletteオプションで指定します。
 

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = hp, y = mpg, colour = as.factor(cyl))) + 
    ggplot2::geom_point(size = 2) + 
    ggplot2::scale_colour_brewer(palette = "Accent")

 

塗りつぶし色のパレットを変更する

グラフの塗りつぶし色はfillオプションになりますので、fillオプションが利用するパレットを変えるにはggplot2::scale_fill_brewer関数を用います。

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = as.factor(cyl), fill = as.factor(cyl))) + 
    ggplot2::geom_bar()

 
ggplot2::scale_colour_brewer関数と同様にpalletteオプションにパレット名を指定します。下記の場合、ggplot2::scale_fill_brewer関数のみを適用しているますので、線色の方はデフォルトのままになっていることが分かります。
 

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = as.factor(cyl), fill = as.factor(cyl),
                               colour = as.factor(cyl))) + 
    ggplot2::geom_bar() + 
    ggplot2::scale_fill_brewer(palette = "Accent")

 

カスタムパレットを使う

カラーパレットは自作することも可能です。

ggplot2

ggplot2でカスタムパレットを作成するにはggplot2::scale_colour_manual関数とggplot2::scale_fill_manual関数を使います。
 

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = as.factor(cyl), fill = as.factor(cyl),
                               colour = as.factor(cyl))) + 
    ggplot2::geom_bar() + 
    ggplot2::scale_fill_manual(values = c("#FF0000", "#00FF00", "#0000FF"))

 

ggthemes

ggthemesパッケージは150パターンにもおよぶカラーパレットやテーマを提供してくれるパッケージです。カラーパレットだけでなくggplot2互換のscale_関数群も提供しています。
 

Table 1: Palette data sample
name V1 V2 V3 V4
Antique.and.clean #b56357 #b4dbc0 #eae3ea #a7b3a5
Antique.tones #155765 #57652a #ab9353 #4d2c3d
Aqua.blues #004d47 #128277 #52958b #b9c4c9
Art.history.inspired #ffce00 #0375b4 #007849 #262228
Artic.sunrise #ffccbb #6eb5c0 #006c84 #e2e8e4
Autumn.in.vermont #8d230f #1e434c #9b4f0f #c99e10
Autumn.oranges.and.complemtentary.neutrals #d55448 #ffa577 #f9f9ff #896e69
Back.to.school #81715e #faae3d #e38533 #e4535e
Berry.blues #1e1f26 #283655 #4d648d #d0e1f9
Beyond.black.and.white #31a2ac #af1c1c #f0eff0 #2f2f28

 
ggthemeパッケージを用いるとExcelライクなグラフも簡単に描画できます。
 

mtcars %>% 
  ggplot2::ggplot(ggplot2::aes(x = as.factor(cyl), fill = as.factor(cyl))) + 
    ggplot2::geom_bar() + 
    ggthemes::theme_excel() + 
    ggthemes::scale_fill_excel() + ggthemes::scale_colour_excel()

 

参考資料

 
ENJOY!  


CC BY-NC-SA 4.0 , Sampo Suzuki