まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

ggplot2覚書⑧ theme詳細 color

引き続き「Rグラフィッククックブック」。

過去記事は以下。

ggplot2覚書① 棒グラフ - まずは蝋の翼から。

ggplot2覚書② 散布図 - まずは蝋の翼から。

ggplot2覚書③ 注釈(解釈補助) - まずは蝋の翼から。

ggplot2覚書④ 軸について - まずは蝋の翼から。

ggplot2覚書⑤ 体裁(theme、テキストgeom)に関しての大枠 - まずは蝋の翼から。

ggplot2覚書⑥ theme詳細 凡例の設定 - まずは蝋の翼から。

ggplot2覚書⑦ theme詳細 facet - まずは蝋の翼から。

カテゴリカル変数

既存の色セットを使う

themeと同じく、既存の色セットを使うことができる。
なお、既存の色セットのデフォルト明度は65だが、lを指定すると任意の明度にできる。
また、任意の色指定はscale_colour_manualに色ベクトルを渡すことでできるが、色ベクトルは凡例のlevel順に対応するので注意。c(A = "grey", B = "red", C = "pink")のように名前付きベクトルで任意の対応付も可能

library(gcookbook) # データの読み込み
library(patchwork)

# 基本プロット

sample_char <- c("B", "A", "C")
x   <- c("x1", "x2", "x3")
y   <- c(100,200,300)

d_char <- data.frame(sample = sample_char, x = x, y = y)

p <- d_char %>% 
  mutate(sample = factor(sample, levels = c("A","B","C"))) %>%
  ggplot(aes(x = x, y = y, fill = sample)) +
  geom_bar(stat = "identity", position = "dodge") 

# ColorFew(ColorDiscrete:デフォルト)
g1 <- p + 
  scale_fill_hue()

# ColorBrewerパレット 
g2 <- p + 
  scale_fill_brewer()

# ColorBrewerパレット(明度45)
g3 <- p + 
  scale_fill_brewer(l=45)

# ColorGreyパレット
g4 <- p + 
  scale_fill_grey() 

# ColorManualパレット
g5 <- p + 
  scale_fill_manual(values =  c("grey","red","pink")) 
#ベクトル値に対して対応するので前からlevelのA,B,Cに対応
# c(A = "grey", B = "red", C = "pink")のように名前付きベクトル指定をすると任意の対応にできる


g1/g2/g3/g4/g5

f:id:chito_ng:20190223225323p:plain

RColorBrewerパッケージ

RColorBrewerパッケージには多くのパレットがある。

library(RColorBrewer) 

display.brewer.all()

f:id:chito_ng:20190224124026p:plain

上図のパレットを指定することができる。

library(RColorBrewer) 
library(patchwork)

g1 <- p +
  scale_fill_brewer(palette="Oranges") +
  labs(title = "Oranges")

g2 <- p +
  scale_fill_brewer(palette="GnBu") +
  labs(title = "GnBu")

g3 <- p +
  scale_fill_brewer(palette="Set3") +
  labs(title = "Set3")

g4 <- p +
  scale_fill_brewer(palette="Spectral") +
  labs(title = "Spectral")


(g1 | g2) / (g3|g4)

f:id:chito_ng:20190224124414p:plain

連続値

連続値の色はグラデーションとなる。

  • scalefill_gradient:最低値の色から最高値の色となる2色間のグラデーション
  • scalefill_gradient2:最低値の色から中央値の色、中央値の色から最高値の色となる、中間色を経由した3色間のグラデーション
  • scalefill_gradientn:任意の色数を等間隔にグラデーションされた色。
library(gcookbook) # データの読み込み

# 基本プロット 
g1 <- p <- ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb)) + 
  geom_point(size=3) +
  labs(title = "default")

# 2色の間のグラデーション 
g2 <- g1 + 
  scale_colour_gradient(low="black", high="white")+
  labs(title = "2colors")

library(scales)
# 中間に白を挟んだグラデーション 
g3 <- g1 +
  scale_colour_gradient2(low=muted("red"), mid="white", high=muted("blue"), midpoint=110)+
  labs(title = "3colors")

# n個の色のグラデーション 
g4 <- g1 +
  scale_colour_gradientn(colours = c("darkred", "orange", "yellow", "white"))+
  labs(title = "n colors")

library(patchwork)
(g1 | g2) / (g3|g4)

f:id:chito_ng:20190224130539p:plain