[[ggplot2]] で棒グラフを作成する際、`ggplot2::geom_bar()` と `ggplot2::geom_col()` の 2 つの関数が利用できる。両者は似た結果を生成するが、データの処理方法に根本的な違いがある。 ## `geom_col()`: 既に集計済みの値を可視化する `ggplot2::geom_col()` は、既に集計された値をそのまま棒の高さに設定する場合に使用する。データの前処理と可視化を明確に分離できるため、コードの意図が分かりやすくなる。 ```r # 可視化する前に、データを集計する summarised_penguins <- penguins |> group_by(species) |> summarise(body_mass_mean = mean(body_mass, na = TRUE)) # 集計データを元に、geom_col()で可視化する ggplot(summarised_penguins, aes(x = body_mass_mean, y = species)) + geom_col() ``` ![[ggplot2-geom-col-vs-geom-bar.png]] ## `geom_bar()`: 生データから統計量を計算して可視化する `ggplot2::geom_bar()` は、生データから統計量を計算して可視化したい場合に使用する。一つの関数で集計と可視化を完結できるため、EDA(探索的データ分析) において効率的である。デフォルトの集計関数はカウント。 ```r # 集計と可視化を同時に行う ggplot(penguins, aes(x = body_mass, y = species)) + geom_bar(stat = "summary", fun = mean) + xlab("body_mass_mean") ``` ![[ggplot2-geom-col-vs-geom-bar.png]] ## 関連ノート - **[前提]** [[ggplot2 は geom を組み合わせて可視化する]]: `geom_col()` / `geom_bar()` はこの geom の一種 - **[派生]** [[ggplot2 で棒グラフの間隔を調整する]]: `geom_col()` / `geom_bar()` の見た目を整える応用オプション