本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:カラーパレット作成や連続・離散スケールの操作が簡単「scales」パッケージ

カラーパレットの作成だけでなく、文字列の表示形式や連続・離散スケールの管理が簡単な「scalesパッケージ」を紹介します。連続・離散スケールの管理コマンドを使うと、plotコマンドだけではなくggplot2パッケージでも軸やスケールの調整が楽になると思います。

Rの操作に慣れていない方へオススメしたいパッケージです。

パッケージのバージョンは1.1.1。実行コマンドはwindows 11のR version 4.1.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("scales")
スポンサーリンク

パッケージの読み込み

下記を実行してパッケージを読み込んでください。

#パッケージの読み込み
library("scales")

カラーパレット作成のコマンド紹介

詳細はコマンド内のコメントを確認してください。

#カラーパレットの作成:show_colコマンド
#show_col(色, labels = カラーコードの表示:TRUE/FALSE, borders = 枠線の色を指定:枠無しはNA)
show_col("#4b61ba", labels = TRUE, borders = "#a87963")

#seq_gradient_palコマンドとの組み合わせ
#参考記事:Rでお遊び:プレゼン資料の配色に使えるかも?キャラクターの髪の色?
#https://www.karada-good.net/analyticsr/r-83/
#ダンまち,花咲くいろはパレット
x <- seq(0, 1, length = 600)
show_col(seq_gradient_pal(c("#e1e6ea", "#505457", "#4b61ba", "#a87963",
                            "#d9bb9c", "#756c6d", "#807765", "#ad8a80"))(x),
         labels = FALSE, borders = "#a87963")

#透明度を与えた単色カラーパレットを作成:alphaコマンド
#alpha(色, alpha = 0-1の単独数値または配列により指定)
show_col(alpha("#4b61ba", seq(0, 1, length = 12)))

出力例

・show_colコマンド

show_col

・seq_gradient_palコマンドとの組み合わせ(ダンまち&花咲くいろはパレット)

show_colDanIro

・alphaコマンド

show_colalpha

文字列の表示形式と連続・離散スケールのコマンド紹介

詳細はコマンド内のコメントを確認してください。

###データ例の作成#####
TestData <- data.frame(Group = paste0("TEST", 1:10),
                       Data1 = sample(1:500, 10),
                       Data2 = sample(200:300, 10))
#####

#comma_formatコマンド
#3桁毎にカンマを付与
comma(c(1, 1000, 2000, 1000000))
[1] "1" "1,000" "2,000" "1,000,000"

#指定した範囲のbreaksとlabelsを作成:cbreaksコマンド
#pretty_breaksオプション:分割数を指定
#labelsオプション:初期値scientific_format()
#labelsオプションに設定できるコマンド
#カンマ表示;comma_format(digits = 3), 日にち表示;date_format(format = "%Y-%m-%d", tz = "UTC"),
#ドル表示;dollar_format(), 表現式;percent_format(), unit表示;unit_format()
cbreaks(c(0, 100), pretty_breaks(10), labels = percent_format())
$breaks
[1]   0  10  20  30  40  50  60  70  80  90 100
$labels
[1] "0%" "1,000%" "2,000%" "3,000%" "4,000%" "5,000%" "6,000%" "7,000%" "8,000%" "9,000%" "10,000%"

#マニュアルでもbreaksを設定できます
cbreaks(c(0, 100), breaks = c(15, 30), labels = percent_format())
$breaks
[1] 15 30
$labels
[1] "1,500%" "3,000%"

#連続スケール:cscaleコマンド
#使えそうな2つのパレットを紹介、他のパレットはHELPを参照
#macでの文字化け防止
par(family = "HiraKakuProN-W3")
#area_palパレット
plot(TestData[, 2], TestData[, 2], xlab = "", ylab = "", main = "area_palパレット",
     cex = cscale(TestData[, 2], area_pal(range = c(1, 10))), col = "#4b61ba", pch = 16)
#seq_gradient_palパレット
plot(TestData[, 2], TestData[, 2], pch = 17, cex = 6, xlab = "", ylab = "", main = "seq_gradient_palパレット",
     col = cscale(TestData[, 2], seq_gradient_pal("#4b61ba", "#a87963")))

#離散スケール:dscaleコマンド
#使えそうな4つのパレットを紹介、他のパレットはHELPを参照
#macでの文字化け防止
par(family = "HiraKakuProN-W3")
#brewer_palパレット
plot(TestData[, 2], TestData[, 2], pch = 17, cex = 6, xlab = "", ylab = "",
     main = "brewer_palパレット", col = dscale(TestData[, 1], brewer_pal("div")))
#grey_palパレット
plot(TestData[, 2], TestData[, 2], pch = 17, cex = 6, xlab = "", ylab = "", main = "grey_palパレット",
     col = dscale(TestData[, 1], grey_pal(start = 0, end = 0.8)))
#hue_palパレット
#directionオプション:カラーホイールの指定, 1 = clockwise, -1 = counter-clockwise
plot(TestData[, 2], TestData[, 2], pch = 17, cex = 6, xlab = "", ylab = "", main = "hue_palパレット",
     col = dscale(TestData[, 1], hue_pal(h = c(0, 160) + 15, c = 30, l = 75, h.start = 0, direction = 1)))
#shape_palパレット
#最大6グループまで自動でシンボルを設定します。6以上はエラーになります
plot(TestData[, 2], TestData[, 2], pch = dscale(TestData[, 1], shape_pal(solid = TRUE)), cex = 6, xlab = "", ylab = "",
     main = "shape_palパレット", col = dscale(TestData[, 1], hue_pal(h = c(0, 160) + 15, c = 30, l = 75, h.start = 0, direction = 1)))

出力例

<連続スケール:cscaleコマンド>
・area_palパレット

area_pal

・seq_gradient_palパレット

seq_gradient_pal

<離散スケール:dscaleコマンド>
・brewer_palパレット

dscalebrewer_pal

・grey_palパレット

grey_pal

・hue_palパレット

hue_pal

・shape_palパレット

shape_pal

少しでも、あなたの解析が楽になりますように!!

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.