[[ggplot2]] の棒グラフ (`ggplot2::geom_col()`, `ggplot2::geom_bar()`) では、`fill` エステティック属性を使用して棒の色を変更できる。 デフォルトの色は `#595959`(グレー) で、固定値による一律の色変更とデータ値による条件付きの色変更の 2 つの方法がある。 ```r # 前処理 upc <- uspopchange |> arrange(desc(Change)) |> slice(1:15) ``` ## 固定値による一律の色変更 すべての棒を同じ色で塗りつぶしたい場合は、`ggplot2::geom_col()` または `ggplot2::geom_bar()` の引数として `fill` を指定する。 ```r ggplot(upc, aes(x = Change, y = State)) + geom_col(fill = "black") ``` ![[ggplot2-bar-fill-fixed.png]] `fill` には色名 [^1] や 16 進数カラーコード、RGB 値を指定できる。 ```r # 色名で指定 geom_col(fill = "black") # 16進数カラーコードで指定 geom_col(fill = "#000000") # RGB値で指定 geom_col(fill = rgb(0, 0, 0)) ``` ## データ値による条件付きの色変更 データの値に応じて棒の色を変更したい場合は、`ggplot2::aes()` 内で `fill` を指定する。 ```r ggplot(upc, aes(x = Change, y = State, fill = Region)) + geom_col() ``` ![[ggplot2-bar-fill-by-variable.png]] デフォルトの色から変更したい場合は、以下のスケール関数から選択する - `ggplot2::scale_fill_brewer()`: プリセットカラーパレット [^2] を使用 - `ggplot2::scale_fill_manual()`: 手動で色を指定 ### `scale_fill_brewer()`: プリセットカラーパレットを使用する ```r ggplot(upc, aes(x = Change, y = State, fill = Region)) + geom_col() + scale_fill_brewer(palette = "Set2") ``` ![[ggplot2-bar-fill-brewer.png]] ### `scale_fill_manual()`: 手動で色を指定する ```r ggplot(upc, aes(x = Change, y = State, fill = Region)) + geom_col() + scale_fill_manual(values = c("#669933", "#FFCC66")) ``` ![[ggplot2-bar-fill-manual.png]] ## 関連ノート - **[前提]** [[ggplot2 のエステティック属性は、aes() 内では変数を、外では定数を指定する]]: 本ノートの一律色変更と条件付き色変更の 2 通りはこの仕様に従う - **[前提]** [[ggplot2 の棒グラフは用途に応じて geom_col() と geom_bar() を使い分ける]]: 本ノートの `fill` 指定はこれらの共通引数 - **[対比]** [[ggplot2 の棒グラフの枠線の色を変更する]]: 本ノートの内側 (`fill`) と対になる、棒の色指定 2 軸 [^1]: `grDevices::colors()` で色名一覧を取得できる [^2]: `RColorBrewer::display.brewer.all()` でプリセットカラーパレットの一覧を取得できる