ggplot による散布図の作成
UB3/informatics/r/ggplot_scatter
このページの最終更新日: 2025/01/05- 概要: ggplot 散布図の作り方
- タイトルと軸ラベルを追加する
- 複数のデータ群を色を変えてプロットする
- データラベルを追加する
- 注釈 (任意のテキスト) を追加する
- 途中波線を入れて軸の一部を省略する
- ggplot 散布図グラフオプション
別ページ
- ggplot 散布図に回帰直線や相関係数を追加する
- ggplot によるバブルプロットの作成: 散布図と同様に geom_point() を使う。
広告
概要: ggplot 散布図の作り方
ggplot2 による図形描画は、以下の 3 ステップから成る。基本的な使い方は ggplot のメインページ にまとめたので、リンク先を参照のこと。theme で設定する軸のフォントなど、散布図以外にも当てはまるような内容は、基本的にはメインページに載っている。
- ggplot でキャンバスを準備する
- geom などでグラフをキャンバス上に作成 (重ね書きもできる)
- theme などでフォント、色などの設定を追加
このページでは、ggplot を使って散布図を作り、それにいろいろな要素を付け足していく方法をまとめる。
まずは、基本的な散布図。組み込みデータセット trees を使用。

軸の範囲や break を指定したいときは、scale_y_continuous(breaks=seq(0,120,length=5),limits=c(0,120)) のようにする (参考)。
点のサイズは、geom_point(aes(size = 1)) のようにする。グラフ全体を小さくすると、点も自動で 1 より小さくなる。ここで size = 1 とすると逆に点が大きくなってしまい、ちょっとどうなっているのかよくわからない。
タイトルと軸ラベルを追加する
軸ラベルの追加には、labs を使用する。グラフの X 軸ラベル、Y 軸ラベルもここで追加できる。
変数をタイトルや軸ラベルにしたい場合は、labs(title = paste0(vector)) で良い。

タイトル、軸ラベルなどのスタイルを設定する
theme() を追加して設定する。この theme を使って、アスペクト比など様々な項目を設定することができる。ページ下方の表にまとめがある ので参照のこと。


複数のデータ群を色を変えてプロットする
複数のデータ群を色を変えてプロットするときは、ggplot のところで color で設定する。
ここからは mtcars というデータセットを使う。この例の場合、am が連続変数として認識され、カラースケールバーつきになる。


カテゴリー変数のカラムを指定すれば、グループ分けになる。am を使う場合でも、0 と 1 をカテゴリー変数として読み込めば良いので、以下のように as.factor() 関数を使用する。

シンボルの色指定は + scale_color_manual(values=c("black","black")) など (参考)。
凡例を消すのは + theme(legend.position = 'none')。
データラベルを追加する
ggplot の部分で label を設定し、geom_point() のかわりに geom_text() を指定する。点でなく、実際の値がプロットされる。もとのデータが文字列ならば、文字がそのままプロットされる。

geom_text() でなく、geom_label() とするとこうなる。

ggrepel というパッケージを使い、geom_label_repel() にするパターン。これは、ポイントから線を引いた形で表示される。

ラベルをテキストだけにしたい場合は、geom_text_repel() とする。これはスペースが十分にあるので、ポイントから線が引かれていないが、表示するテキストが長くなれば、位置などは自動調整される。

注釈 (任意のテキスト) を追加する
散布図上に任意のテキストを追加するには、+annotate を用いる (参考)。
"text" で文字列を指定。"segment" で線分、"rect" で網掛けなど、いろいろなパターンがある。
x, y は、アノテーションの座標を指定する。x 軸および y 軸の値になる。下の図では、もともと x は 10 から始まっていたが、x = 0 を指定してしまったので軸の方が変更された。
hjust は horizontal adjust で、文字が x 軸方向に動く。vjust は vertical で縦に動く。
label には、ベクターを代入することも可能。

途中波線を入れて軸の一部を省略する
値がある範囲に集中しているが、いくつか外れ値があるようなデータでは、そのまま散布図にすると見にくくなる。途中波線を入れて、軸の一部を省略することで、混んでいる部分を見やすくできる。
ggbreak パッケージを使う。いずれまとめたいが、とりあえずは 参考ページにリンクしておく。
波線での分割とは少し異なるが、R ggplot: 複数のグラフをまとめて出力する のページでは、facet_wrap() 等でグラフを分割する方法も説明している。
ggplot 散布図グラフオプション
+ で追加していけるもの、散布図でよく使うもの中心。theme など、ggplot 全般に使われるものは 概要 から ggplot のメインページへどうぞ。
after_stat |
after_stat(eq.label), after_stat(rr.label) で、回帰直線の式と R2 を追加。参考ページ。 |
scale_color_manual |
マニュアルでのシンボル色指定。aes で color を指定し、その数に応じて c() の中で色を指定する。 + scale_color_manual(values=c("black","black")) |
stat_ellipse() |
確率楕円を追加する。 |
広告
References
- ggplot2で散布図を作成. Link: Last access 2023/11/05.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。