[[ggplot2]] では、geom(幾何学的オブジェクト) を重ね合わせることで、多層的なグラフを作成する。これは、レイヤーを重ねて 1 つの絵を完成させるのと似ており、1 つのグラフに複数の geom を追加することで、データの関係性やパターンをより詳しく見ることができる。
## geom の段階的な構築
### 1. 座標軸の設定
```r
ggplot(mtcars, aes(wt, mpg)) # 座標軸を設定
```
![[ggplot2-geom-layers-1-axes.png]]
この段階では、データと aesthetic の設定のみが行われ、まだ何も描画されていない。
### 2. 散布図の追加
```r
ggplot(mtcars, aes(wt, mpg)) +
geom_point() # 散布図を追加
```
![[ggplot2-geom-layers-2-point.png]]
`ggplot2::geom_point()` により、各データポイントが点として表示され、重量と燃費の関係が視覚化された。
### 3. 回帰線の追加
```r
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) # 回帰線を追加
```
![[ggplot2-geom-layers-3-smooth.png]]
`ggplot2::geom_smooth()` で回帰線が追加され、データの全体的な傾向が明確になった。
### 4. データ分布の追加
```r
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
geom_rug() # データ分布を追加
```
![[ggplot2-geom-layers-4-rug.png]]
`ggplot2::geom_rug()` により軸の端にデータ分布が表示され、値の密集具合も把握できるようになった。
## 関連ノート
- **[応用]** [[ggplot2 の棒グラフは用途に応じて geom_col() と geom_bar() を使い分ける]]: 本ノートの geom 概念を棒グラフに具体化した代表例
- **[派生]** [[ggplot2 のエステティック属性は、aes() 内では変数を、外では定数を指定する]]: geom を具体的に扱う際に押さえる周辺知識