ggplot2覚書⑧ theme詳細 color
引き続き「Rグラフィッククックブック」。
Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集
- 作者:Winston Chang
- 発売日: 2013/11/30
- メディア: 大型本
過去記事は以下。
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
RColorBrewerパッケージ
RColorBrewerパッケージには多くのパレットがある。
library(RColorBrewer) display.brewer.all()
上図のパレットを指定することができる。
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)
連続値
連続値の色はグラデーションとなる。
- 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)