忘れがちなggplot2でのcolとfillの色指定方法をザクッとまとめました。軸に設定した離散値、連続値を意識すると理解しやすいのではと思います。
tidyverseのバージョンは1.3.1。windows 11のR version 4.1.2で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
#install.packages("ggplot2")
install.packages("tidyverse")
色指定方法のまとめ
詳細はコマンド、パッケージのヘルプを確認してください。
#パッケージの読み込み
#library("ggplot2")
library("tidyverse")
###準備#####
#データ例の作成
n <- 300
PlotData <- data.frame(ID = rep(1:5, len = n),
Group = sample(c("A", "B", "C"), n, replace = TRUE),
Time_A = abs(rnorm(n)), Time_B = -log2(abs(rnorm(n))))
#Group情報で色を付与
PlotData <- PlotData %>%
#case_whenは条件式 ~ 結果で指定します
mutate(GroupCol = case_when(Group == "A" ~ "#a0b981",
Group == "B" ~ "#47547c",
Group == "C" ~ "#9f8288"))
#色の確認 #https://www.karada-good.net/analyticsr/r-109
#install.packages("scales")
#library("scales")
#show_col(c("#a0b981", "#47547c", "#9f8288"))
#プロットを並べて表示するのに便利なパッケージ
#https://www.karada-good.net/analyticsr/r-591
#install.packages("multipanelfigure")
library("multipanelfigure")
########
###データに色情報が含まれている場合:scale_XXX_identityコマンド#####
#colを指定する場合:scale_colour_identityコマンド
PointPlot <- ggplot(PlotData, aes(x = Time_A, y = Time_B)) +
geom_point(aes(col = GroupCol), size = 2) +
scale_colour_identity(guide = "none") +
labs(title = "scale_colour_identity")
#fillを指定する場合:scale_fill_identityコマンド
BarPlot <- ggplot(PlotData, aes(x = Group)) +
geom_bar(aes(fill = GroupCol)) +
scale_fill_identity(guide = "none") +
labs(title = "scale_fill_identity")
#プロット
multi_panel_figure(columns = 2, rows = 1) %>%
fill_panel(panel = PointPlot, column = 1, row = 1, label = "") %>%
fill_panel(panel = BarPlot, column = 2, row = 1, label = "")
########
###色情報を指定する:scall_XXX_manualコマンド#####
#colの場合:scale_colour_manualコマンド
PointPlot <- ggplot(PlotData, aes(x = Time_A, y = Time_B)) +
geom_point(aes(col = Group), size = 2) +
scale_colour_manual(values = c("#deb7a0", "#4b61ba", "#a87963"), guide = "none") +
labs(title = "scale_colour_manual")
#fillの場合:scale_fill_manualコマンド
BarPlot <- ggplot(PlotData, aes(x = Group)) +
geom_bar(aes(fill = Group)) +
scale_fill_manual(values = c("#deb7a0", "#4b61ba", "#a87963"), guide = "none") +
labs(title = "scale_fill_manual")
#プロット
multi_panel_figure(columns = 2, rows = 1) %>%
fill_panel(panel = PointPlot, column = 1, row = 1, label = "") %>%
fill_panel(panel = BarPlot, column = 2, row = 1, label = "")
########
###グラジエント化:scall_XXX_gradient,scall_XXX_gradient2コマンド#####
#colの場合:scale_colour_gradientコマンド
#colに指定するデータは連続変数
PointPlot1 <- ggplot(PlotData, aes(x = Time_A, y = Time_B)) +
geom_point(aes(col = Time_A), size = 2) +
scale_colour_gradient(low = "#6f74a4", high = "#f6adad", guide = "none") +
labs(title = "scale_colour_gradient")
#colの場合:scale_colour_gradient2コマンド
#colに指定するデータは連続変数
PointPlot2 <- ggplot(PlotData, aes(x = Time_A, y = Time_B)) +
geom_point(aes(col = Time_A), size = 2) +
scale_colour_gradient2(low = "#6f74a4", high = "#f6adad", mid = "#7edbf2", guide = "none") +
labs(title = "scale_colour_gradient2")
#fillの場合:scale_fill_gradientコマンド
histogram1 <- ggplot(PlotData, aes(x = Time_A)) +
geom_histogram(aes(fill = ..x..)) +
scale_fill_gradient(low = "#6f74a4", high = "#f6adad", guide = "none") +
labs(title = "scale_fill_gradient")
#fillの場合:scale_fill_gradient2コマンド
histogram2 <- ggplot(PlotData, aes(x = Time_A)) +
geom_histogram(aes(fill = ..x..)) +
scale_fill_gradient2(low = "#6f74a4", high = "#f6adad", mid = "#7edbf2", guide = "none") +
labs(title = "scale_fill_gradient2")
#プロット
multi_panel_figure(columns = 2, rows = 2) %>%
fill_panel(panel = PointPlot1, column = 1, row = 1, label = "") %>%
fill_panel(panel = PointPlot2, column = 2, row = 1, label = "") %>%
fill_panel(panel = histogram1, column = 1, row = 2, label = "") %>%
fill_panel(panel = histogram2, column = 2, row = 2, label = "")
########
###色パレットを利用:scall_XXX_brewer,scall_XXX_distillerコマンド#####
#色パレットは次のコマンドで確認:RColorBrewer::display.brewer.all()
#colの場合:scale_colour_brewerコマンド
PointPlot1 <- ggplot(PlotData, aes(x = ID, y = Time_B)) +
geom_point(aes(col = Group), size = 2) +
scale_colour_brewer(palette = "Set3", guide = "none") +
labs(title = "scale_colour_brewer")
#colの場合:scale_colour_distillerコマンド
PointPlot2 <- ggplot(PlotData, aes(x = ID, y = Time_B)) +
geom_point(aes(col = ..x..), size = 2) +
scale_colour_distiller(palette = "Set3", guide = "none") +
labs(title = "scale_colour_distiller")
#fillの場合:scale_fill_brewerコマンド
histogram1 <- ggplot(PlotData, aes(x = Group)) +
geom_histogram(aes(fill = Group), stat="count") +
scale_fill_brewer(palette = "Set3", guide = "none") +
labs(title = "scale_fill_brewer")
#fillの場合:scale_fill_distillerコマンド
histogram2 <- ggplot(PlotData, aes(x = Time_A)) +
geom_histogram(aes(fill = ..x..)) +
scale_fill_distiller(palette = "Set3", guide = "none") +
labs(title = "scale_fill_distiller")
#プロット
multi_panel_figure(columns = 2, rows = 2) %>%
fill_panel(panel = PointPlot1, column = 1, row = 1, label = "") %>%
fill_panel(panel = PointPlot2, column = 2, row = 1, label = "") %>%
fill_panel(panel = histogram1, column = 1, row = 2, label = "") %>%
fill_panel(panel = histogram2, column = 2, row = 2, label = "")
########
###グレースケール化:scale_XXX_greyコマンド#####
#colの場合:scale_colour_greyコマンド
PointPlot <- ggplot(PlotData, aes(x = Time_A, y = Time_B)) +
geom_point(aes(col = Group), size = 2) +
scale_colour_grey(start = .2, end = .7, guide = "none") +
labs(title = "scale_colour_grey")
#fillの場合:scale_fill_greyコマンド
BarPlot <- ggplot(PlotData, aes(x = Group)) +
geom_bar(aes(fill = Group)) +
scale_fill_grey(start = .2, end = .7, guide = "none") +
labs(title = "scale_fill_grey")
#プロット
multi_panel_figure(columns = 2, rows = 1) %>%
fill_panel(panel = PointPlot, column = 1, row = 1, label = "") %>%
fill_panel(panel = BarPlot, column = 2, row = 1, label = "")
########
出力例
データに色情報が含まれている場合
・scale_XXX_identityコマンド

色情報を指定する
・scall_XXX_manualコマンド

グラジエント化
・scall_XXX_gradient,scall_XXX_gradient2コマンド

色パレットを利用
・scall_XXX_brewer,scall_XXX_distillerコマンド

グレースケール化
・scale_XXX_greyコマンド

少しでも、あなたのウェブや実験の解析が楽になりますように!!