【R】 色
【色確認】
0. RStudioのスクリプト内
原稿のRStudioはR scriptやR notebook内で色名や色コードを打つだけでその色でハイライトされるようになった。
色ベクトルを作ってくれる機能を使う場合でも、dput()
に渡して、色ベクトルをスクリプトにコピペしたら簡単に確認可能。
Console画面
スクリプトにコピペした結果
barplot()
1. 色の数だけ1を繰り返したベクトルを作って棒グラフ作成。col引数に見たい色を入れる。
barplot(rep(1,5), col = c("white","gray","black","red","blue"))
pie()
2. pie(rep(1, 100), col = terrain.colors(100))
show_col()
機能
3. scalesパッケージのscales::show_col(RColorBrewer::brewer.pal(n = 9, name = "Set1"))
4. RColorBrewerのパレットは専用コマンドが用意されている。
RColorBrewer::display.brewer.all()
image()
5. Rに初めから入っているvolcanoデータをimage機能で描画する際のcol引数に確認したい色ベクトルを入れる。
image(volcano, col = viridis::turbo(100))
plot_schema()
機能
6. khromaパッケージのkhroma::plot_scheme(RColorBrewer::brewer.pal(n = 9, name = "Set1"))
weave_plot()
機能
7. colorwayパッケージのcolorway::weave_plot(RColorBrewer::brewer.pal(n = 9, name = "Set1"))
colorspace_plot()
機能
8. colorwayパッケージの2次元の色空間に色情報をplotする。
colorway::colorspace_plot(viridis::turbo(100))
ggplotで使われてる色作成機能
ggColorHue <- function(n, l=65) {
hues <- seq(15, 375, length=n+1)
hcl(h=hues, l=l, c=100)[1:n]
}
cols <- ggColorHue(n = 100)
barplot(rep(1,100), col = cols)
sclaesパッケージのhue_pal機能で同じ色が作れる。
scales::hue_pal()(10)
colorRampPaletteで色を増やす
RColorBrewerのパレットは多くても11色までしかない。
barplot(rep(1,11), col=RColorBrewer::brewer.pal(11, "Paired"))
colorRampPalette機能を使えば、色を補完して欲しい数の色ベクトルを作ることができる。
barplot(rep(1,100), col=colorRampPalette(RColorBrewer::brewer.pal(11, "Paired"))(n=100))
デフォルトで入っているパレット
barplot(rep(1,100), col = topo.colors(100))
barplot(rep(1,100), col = rainbow(100))
barplot(rep(1,100), col = heat.colors(100))
barplot(rep(1,100), col = terrain.colors(100))
barplot(rep(1,100), col = cm.colors(100))
viridisパッケージ
library(viridis)
n = 100
パッケージ内のパレット名が関数になっており、欲しい数の色を簡単に作ることができる。
barplot(rep(1,n), col = viridis(n), main = "viridis")
barplot(rep(1,n), col = cividis(n), main = "cividis")
barplot(rep(1,n), col = plasma(n), main = "plasma")
barplot(rep(1,n), col = magma(n), main = "magma")
barplot(rep(1,n), col = inferno(n), main = "inferno")
barplot(rep(1,n), col = rocket(n), main = "rocket")
barplot(rep(1,n), col = mako(n), main = "mako")
barplot(rep(1,n), col = turbo(n), main = "turbo")
wesandersonパッケージ
GitHubにパレットの例が載っている。
install.packages("wesanderson")
library(wesanderson)
指定できるパレット名の確認
names(wes_palettes)
[1] "BottleRocket1" "BottleRocket2" "Rushmore1" "Rushmore" "Royal1" "Royal2"
[7] "Zissou1" "Darjeeling1" "Darjeeling2" "Chevalier1" "FantasticFox1" "Moonrise1"
[13] "Moonrise2" "Moonrise3" "Cavalcanti1" "GrandBudapest1" "GrandBudapest2" "IsleofDogs1"
[19] "IsleofDogs2"
wes_palette(パレット名, n数)
のように使用する。
barplot(rep(1,5), col=wes_palette("Zissou1", n = 5))
パレットの色数は5-7色程度だが、type="continuous"
とつけると色数を増やすことができる。
barplot(rep(1,100), col=wes_palette("Zissou1", n = 100, type = "continuous"))
その他のパレット
barplot(rep(1,100), col=wes_palette("BottleRocket1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("BottleRocket2", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Rushmore", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Royal1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Royal2", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Darjeeling1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Darjeeling2", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Chevalier1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("FantasticFox1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Moonrise1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Moonrise2", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Moonrise3", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("Cavalcanti1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("GrandBudapest1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("GrandBudapest2", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("IsleofDogs1", n = 100, type = "continuous"))
barplot(rep(1,100), col=wes_palette("IsleofDogs2", n = 100, type = "continuous"))
透明度
色コードは6桁の16進数で表されるが、8桁にすると透明度を指定できる。
FFは透明度0 (不透明)。あとは99~00の数字で透明度を指定。00が透明度100%。
RColorBrewer::brewer.pal(12, "Set3")
[1] "#8DD3C7" "#FFFFB3" "#BEBADA" "#FB8072" "#80B1D3" "#FDB462" "#B3DE69" "#FCCDE5" "#D9D9D9" "#BC80BD" "#CCEBC5"
[12] "#FFED6F"
paste0で末尾に透明度のコードを追記する。
paste0(RColorBrewer::brewer.pal(12, "Set3"), "FF")
[1] "#8DD3C7FF" "#FFFFB3FF" "#BEBADAFF" "#FB8072FF" "#80B1D3FF" "#FDB462FF" "#B3DE69FF" "#FCCDE5FF" "#D9D9D9FF"
[10] "#BC80BDFF" "#CCEBC5FF" "#FFED6FFF"
scales::show_col(paste0(RColorBrewer::brewer.pal(12, "Set3"), "FF"))
scales::show_col(paste0(RColorBrewer::brewer.pal(12, "Set3"), "50"))
scales::show_col(paste0(RColorBrewer::brewer.pal(12, "Set3"), "00"))
ggsci
ggplotのscaleシリーズに使える機能と、pal_パレット名
で色ベクトルを作る機能がある。パレットは決まった色の数しかない。
install.packages("ggsci")
library(ggsci)
khroma::plot_scheme(pal_aaas()(10))
khroma::plot_scheme(pal_cosmic()(10))
一つのパレット機能の中にも選択肢があったり、透明度のalphaが指定できたりと選択肢が豊富
khroma::plot_scheme(pal_cosmic(palette = "hallmarks_dark")(10))
khroma::plot_scheme(pal_cosmic(palette = "hallmarks_dark", alpha = 0.5)(10))
shadesパッケージ
shadesパッケージを使えば色の彩度、明度を簡単に修飾できる。
例えばviridisパッケージのturboパレットやRのデフォルト色は明るすぎて見づらかったりするが、shadesパッケージで調整すると良い感じになる。
このサイトが分かりやすかった。
image(volcano, col = viridis::turbo(100))
image(volcano, col = saturation(viridis::turbo(100), values = 0.5))
黄緑から緑の変化がわかりやすくなった気がする。
image(volcano, col = brightness(viridis::turbo(100), values = 0.8))
便利なことにggplotのscaleシリーズにも直接使用できる。
ggplot(data = iris, mapping = aes(x = Sepal.Width, y = Sepal.Length, col = Petal.Length)) +
geom_point() +
brightness(scale_color_gradientn(colours = rainbow(100)), values = 0.5)
gplotsパッケージ
簡単に2色のグラデーションカラーベクトルを作ることができる。
library(gplots)
n=100
par(mfrow=c(4,1))
barplot(rep(1,n), col = redgreen(n), main = "redgreen", axes = F)
barplot(rep(1,n), col = greenred(n), main = "greenred", axes = F)
barplot(rep(1,n), col = bluered(n), main = "bluered", axes = F)
barplot(rep(1,n), col = redblue(n), main = "redblue", axes = F)
【colorway】
インストール
devtools::install_github("hypercompetent/colorway")
varibow()
Rでデフォルトで入っているrainbow()
よりも非連続的な色パレットが作れる。
colors <- varibow(100)
scale_color_varibow()
/scale_fill_varibow()
も用意されており、ggplotの色修飾に使用できる。
build_palette()
中心色を指定するだけで、その色の同系色のパレットが簡単に作られる。こちらも非連続的な色パレットになっている。
red_palette <- build_palette(
central_color = "red",
n_colors = 10)
返り値はリストである。リストの内、palette
/colorset
で色ベクトルが取得でき、palette_plot
/colorset_plot
/weave
ではその色ベクトルでのplotが確認できる。
value_to_colors()
数字のベクトルを渡すと、簡単に値に色を割り当てることができる。ヒートマップの凡例のような情報が簡単に作れる。
values <- c(1,4,10,17,20,35,60)
colors <- values_to_colors(values)
colorset=
オプションで色ベクトルを指定可能。min_val=
/max_val=
オプションから割り当てる色の範囲を指定可能。
同系色のグラディエーション色を用意 webrパッケージのmakeSubColor()
#install.packages("devtools")
devtools::install_github("cardiomoon/webr")
メインの色と何段階に分けるかを指定するだけ
webr::makeSubColor("red",no = 10)
yarrrパッケージ
幾つかの色パレットを提供している。各パレットで使用できる色数は決まっており、グラディエントな色ベクトルを作ってくれる機能は無さそう。
CRANから入手可能。
install.packages("yarrr")
library("yarrr")
全てのパレットを確認
piratepal()
機能のpalette=
引数で"all"を指定。
piratepal(palette = "all")
パレットの色見本
piratepal()
機能のpalette=
引数で特定のパレット名を指定すると、色ベクトルが得られる。plot.result=TRUE
のオプションを付けると、そのパレットを使った見本画像が表示される。
piratepal(palette = "basel",
plot.result = T)
piratepal(palette = "xmen",
plot.result = T)
透明度
trans=
引数を使用する。0が不透明で1に近づくほど透明度が増す。
piratepal(palette = "google")
piratepal(palette = "google", trans=0.5)
【 catecolorsパッケージ 】
4つのカラーパレットがある。離散値用である。
GitHub: https://github.com/btupper/catecolors
紹介記事: https://www.karada-good.net/analyticsr/r-318/
devtools::install_github('btupper/catecolors')
library(catecolors)
パレット確認
show_○○()
で確認可能。
catecolors::show_glasbey()
catecolors::show_boynton()
catecolors::show_kelly()
catecolors::show_watlington()
パレットから色コード取得
パレット名の第一引数でパレットの色番号を指定する。何もしていなければパレット内の全ての色ベクトルが得られる。
catecolors::glasbey(index = 1)
catecolors::boynton(index = 2:10)
catecolors::kelly(index = c(1,3,5))
catecolors::watlington() # 全色
あまり使うことは無いと思うが、各パレットのLook up tableも確認できる。
【 Bokehのパレット 】
R版パッケージもあるから使えるかも。未検証