Rで解析:世界の鳥の羽色でつくるカラーパレット「birdcolors」パッケージ
コウテイペンギンの黒と白、コンゴウインコの赤と青など鳥の羽色は、自然が作り出したカラーパレットだと思います。そんな羽色をカラーパレットとして使えるようにしたのが本パッケージです。収録されているのは世界の鳥の54種で、カラーパレットは2色から9色で構成されています。色数が足りないときは色補間によって指定した色数まで増やすことが可能です。また、ggplot2パッケージのスケールコマンドとbase Rのcolオプションに対応しているので、手軽に利用することが可能です。配色に迷ったときに羽色の色彩の豊かさからアイディアを得ることができるかもしれません。
パッケージバージョンは1.0.1。Windows 11 x64 (build 26200)のR version 4.6.1で確認しています。
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
install.packages("birdcolors")
install.packages("ggplot2")
install.packages("scales")
# パッケージの読み込み
library("birdcolors")
# 作図例で使用するパッケージ
# カラーパレットをscales::show_colでプロット
library("ggplot2")
library("scales")コマンド例
詳細はコメント、パッケージのヘルプを確認してください。
鳥の羽色を色ベクトルとして取り出す:bird_colorsコマンド
本パッケージの中心となるコマンドです。鳥の英名を渡すと、カラーパレットとして16進カラーコードのベクトルを得ることができますggplot2に限らずbase Rのcoオプションなどで使えます。
| オプション | 意味 | 初期値 |
|---|---|---|
| palette_name | 鳥の英名(空白・ハイフン・アポストロフィは自動的に_へ変換される) | “Scarlet Macaw” |
| ncols | 先頭から取り出す色数(NAでパレットの全色) | NA |
| reverse | 色の並び順を反転するか | FALSE |
| expand_palette | 色補間で拡張したあとの色数を数値で指定(FALSEで拡張なし) | FALSE |
# 既定パレット(Scarlet Macawの7色)を取り出す
show_col(bird_colors())
# 5色のパレットを補間して12色まで拡張する
show_col(bird_colors("Scarlet Macaw", expand_palette = 15))
# Scarlet Macawの先頭2色
#show_col(bird_colors("Scarlet Macaw", ncols = 2))・既定パレット(Scarlet Macawの7色)を取り出す

・5色のパレットを補間して12色まで拡張する

base Rの棒グラフにそのまま渡してみます。架空の都市緑地における野鳥調査データを作成して使用します。
# 架空の調査地点別の記録種数データ
survey_df <- data.frame(site = c("北緑地", "中央公園", "河畔林",
"丘陵地", "湿地公園"),
species = c(28, 34, 41, 22, 47))
# Lilac breasted Rollerの5色をそのまま棒の色に割り当てる
barplot(survey_df$species, names.arg = survey_df$site,
col = bird_colors("Lilac breasted Roller"),
border = NA, ylab = "記録種数", main = "調査地点別の記録種数")
収録パレットの一覧を取得:bird_menuコマンド
収録されている全パレットを、鳥名・色数・推奨タイプの3列のデータフレームで返します。推奨タイプ列にはContinuous(連続値向け)、Discrete(離散値向け)、Divergent(発散向け)のいずれかが入り、該当しないパレットは空欄になります。どのパレットを選べばよいか迷ったとき参考になります。
| オプション | 意味 | 初期値 |
|---|---|---|
| all_or_rec | 全パレットは”all”、推奨パレットのみは”rec”を指定 | “all” |
# 全パレットの一覧を取得
bird_all <- bird_menu()
# 先頭12件を確認
# head(bird_all, 12)
# 収録パレットの総数を確認
# nrow(bird_all)・パレットの一覧
| 鳥名(カラーパレット名) | 色数 | 推奨タイプ |
|---|---|---|
| Scarlet_Tanager | 2 | |
| Indigo_Bunting | 2 | |
| Pine_Warbler | 2 | |
| Varied_Thrush | 2 | |
| Cassin_s_Finch | 2 | Continuous |
| Barn_Swallow | 2 | |
| Northern_Cardinal | 2 | |
| Eastern_Screech_Owl | 2 | |
| Adelie_Penguin | 2 | |
| Emperor_Penguin | 2 | |
| Lazuli_Bunting | 3 | |
| Allen_s_Hummingbird | 3 | |
| Thick_billed_Euphonia | 3 | |
| Yellow_headed_Amazon | 3 | |
| Costa_s_Hummingbird | 3 | Divergent |
| Andean_Cock_of_the_Rock | 3 | |
| Lovely_Sunbird | 3 | Divergent |
| Curl_crested_Jay | 3 | |
| Northern_Shoveler | 3 | |
| Blue_footed_Booby | 3 | |
| Tufted_Titmouse | 3 | |
| Eastern_Bluebird | 3 | |
| Belted_Kingfisher | 4 | |
| Gray_crowned_Rosy_finch | 4 | |
| Elegant_Euphonia | 4 | |
| Black_spotted_Bare_eye | 4 | |
| Painted_Bunting | 4 | |
| Malayan_Crested_Fireback | 4 | |
| Sparkling_Violetear | 4 | |
| Roseate_Spoonbill | 4 | |
| Yellow_bellied_Sapsucker | 4 | |
| Blue_Jay | 4 | |
| King_Penguin | 4 | |
| Paradise_Tanager | 5 | |
| Hairy_crested_Antbird | 5 | |
| Keel_billed_Toucan | 5 | |
| Lilac_breasted_Roller | 5 | Discrete |
| Lesser_Yellow_headed_Vulture | 5 | |
| Tricolored_Heron | 5 | |
| Northern_Parula | 5 | |
| Variable_Sunbird | 5 | |
| Ultramarine_Lorikeet | 5 | Continuous |
| Hildebrandt_s_Starling | 5 | Continuous |
| Bluethroat | 5 | Divergent |
| Agami_Heron | 5 | |
| Ruby_throated_Hummingbird | 5 | |
| European_Goldfinch | 6 | Discrete |
| Black_backed_Dwarf_Kingfisher | 6 | |
| Blue_Pitta | 6 | |
| Brown_Pelican | 6 | |
| Scarlet_Macaw | 7 | Discrete |
| Eastern_Cattle_Egret | 7 | |
| Scaly_Ground_Roller | 8 | |
| Wood_Duck | 9 |
“rec”を指定すると、推奨タイプが付いた9パレットが用途別に並べ替えられて表示されます。
# 推奨パレットのみを取得
bird_menu("rec")実行結果:
bird_names ncols recommended
5 Cassin_s_Finch 2 Continuous
42 Ultramarine_Lorikeet 5 Continuous
43 Hildebrandt_s_Starling 5 Continuous
37 Lilac_breasted_Roller 5 Discrete
47 European_Goldfinch 6 Discrete
51 Scarlet_Macaw 7 Discrete
15 Costa_s_Hummingbird 3 Divergent
17 Lovely_Sunbird 3 Divergent
44 Bluethroat 5 Divergentこの結果から、全パレットを8色に拡張したカラーパレットを作っておくと、プロット作成時に便利だと思います。
# 推奨パレットの鳥名を取り出す
rec_names <- bird_menu("rec")$bird_names
# 各パレットを8色に拡張してリスト化
rec_pals <- lapply(rec_names,
function(x) bird_colors(x, expand_palette = 8))
# リストの要素に鳥名を付与
names(rec_pals) <- rec_names
# 先頭2件を確認
lapply(rec_pals[1:2], function(x) show_col(x))・Cassin_s_Finch

・Ultramarine_Lorikeet

<おすすめのRに関する書籍です>
全パレットを一覧画像で見比べる:bird_palette_visualizerコマンド
収録パレットを色帯のタイル画像として一覧描画します。”all”では8行4列のレイアウトでプロットされます。なお、”rec”を指定すると推奨9パレットが3行3列でプロットされ、連続値・発散向けのものは15色に補間された状態で示されます。
| オプション | 意味 | 初期値 |
|---|---|---|
| all_or_rec | 全パレットは”all”、推奨パレットのみは”rec”を指定 | “all” |
| pdf_plot | PDFに出力するか(FALSEで作図デバイスへ直接描画) | FALSE |
| path | pdf_plotがTRUEのときのPDF保存先ディレクトリ(指定必須) | なし |
# 推奨パレットのみを大きめのタイルで一覧表示
bird_palette_visualizer("rec")
# 全パレットの一覧を一時ディレクトリにPDF保存
bird_palette_visualizer("all", pdf_plot = TRUE, path = tempdir())
# 生成されたPDFファイルを確認
browseURL(file.path(tempdir(), list.files(tempdir(), pattern = "pdf")))・推奨パレットのみを大きめのタイルで一覧表示

鳥名の一部からパレットを探す:bird_searchコマンド
鳥の英名の一部を渡すと、部分一致する収録パレット名を返します。大文字と小文字は区別されません。該当がない場合は”No matches found”となります。
| オプション | 意味 | 初期値 |
|---|---|---|
| sp_name | 探したい鳥の英名(部分一致・大文字小文字は区別しない) | “Penguin” |
# Penguinを検索
bird_search("Penguin")
[1] "Available birds: Adelie_Penguin, Emperor_Penguin, King_Penguin"
# Tanagerを検索
bird_search("Tanager")
[1] "Available birds: Scarlet_Tanager, Paradise_Tanager"
# 収録されていない鳥を検索
bird_search("Sparrow")
[1] "No matches found"パレット提供者の貢献数を表示:leaderboardコマンド
パレットを提供した人物と、その提供数を表示します。オプションはありません。
# パレット提供者の一覧を取得
leaderboard()実行結果:
people contributions
1 Ben Tonelli 28
2 Ellie Magaldi 7
3 Casey Youngflesh 7
4 Chris Sayers 5
<おすすめのRに関する書籍です>
ggplot2の点・線の色に適用:scale_color_birdコマンド
bird_colorsコマンドで取り出した色ベクトルを、ggplot2の連続値用カラースケールに変換します。midpointを指定しない場合は色ベクトルを300段階に補間しているため、2色や5色のパレットでもなめらかなグラデーションが表示されます。
| オプション | 意味 | 初期値 |
|---|---|---|
| bird_cols | bird_colorsコマンドで取り出した色ベクトル | なし |
| midpoint | 発散配色の中央となる値(3色パレットのときのみ有効) | NA |
| name | 凡例のラベル | ggplot2::waiver() |
| lim | 色階調に対応させる値の範囲 | NULL |
| na.value | 範囲外および欠測値に割り当てる色 | “grey50” |
| guide | 凡例の種類(ggplot2::scale_fill_gradientを参照) | “colourbar” |
### データ例を作成#####
plot_df <- data.frame(canopy = round(runif(120, 5, 95), 1),
elevation = round(runif(120, 10, 780)))
# 樹冠被覆率への記録種数を付与
plot_df$species <- round(6 + plot_df$canopy * 0.28 + rnorm(120, 0, 3))
########
# 標高を色で表した散布図を作成
ggplot(plot_df, aes(x = canopy, y = species, color = elevation)) +
geom_point(size = 3, alpha = 0.9) +
# 連続値向けに推奨されたUltramarine Lorikeet
scale_color_bird(bird_colors("Ultramarine Lorikeet"), name = "標高(m)") +
labs(x = "樹冠被覆率(%)", y = "記録種数") +
theme_minimal()
ggplot2の塗色に適用:scale_fill_birdコマンド
scale_color_birdの塗色版です。3色パレットはmidpointオプションを指定でき、指定した値を中央色として左右に色を分けた配色になります。増減や平年差のように0を境に意味が変わるデータと相性の良いと思います。
| オプション | 意味 | 初期値 |
|---|---|---|
| bird_cols | bird_colorsコマンドで取り出した色ベクトル | なし |
| midpoint | 発散配色の中央となる値(3色パレットのときのみ有効) | NA |
| name | 凡例のラベル | ggplot2::waiver() |
| lim | 色階調に対応させる値の範囲 | NULL |
| na.value | 範囲外および欠測値に割り当てる色 | “grey50” |
| guide | 凡例の種類(ggplot2::scale_fill_gradientを参照) | “colourbar” |
### データ例を作成#####
# 乱数の種を固定
set.seed(2026)
# 架空の調査地点×調査月の組み合わせを作成
tile_df <- expand.grid(month = 1:12,
site = c("北緑地", "中央公園", "河畔林",
"丘陵地", "湿地公園", "海岸林"))
# 個体数の平年差を付与
tile_df$diff <- round(rnorm(nrow(tile_df), 0, 4), 1)
########
# 平年差をタイルの塗りつぶし色で表現
ggplot(tile_df, aes(x = factor(month), y = site, fill = diff)) +
geom_tile(color = "white", linewidth = 0.6) +
# 3色パレットにmidpointを与えて0を中心としたカラーパレットにする
scale_fill_bird(bird_colors("Lovely Sunbird"), midpoint = 0,
name = "平年差(個体)") +
labs(x = "調査月", y = NULL) +
theme_minimal()
<おすすめのRに関する書籍です>
この記事が誰かの役に立ちますように。