ggplot を使ったバイオリンプロットの作り方

UB3/informatics/r/ggplot_violin

このページの最終更新日: 2024/07/28

  1. 概要: ggplot によるバイオリンプロットの作り方
  2. バイオリンプロットに色をつける
  3. バイオリンプロットの順番を変更する

広告

概要: ggplot によるバイオリンプロットの作り方

このページでは、組み込みデータセット chickwts を使って、ggplot でバイオリンプロットを作る方法を述べる。chickwt は horsebean, linseed, soybean, sunflower meatmeal, casein の 5 種類のエサを与えられて育ったニワトリの体重データで、以下のようなデータフレームに収まっている。

R 組み込みデータセット chickwts

まずは一番単純なプロット。

ggplotで作ったviolinプロット

それぞれのバイオリンの上端と下端が平らになっていて、これらの水平線が最大値と最小値になっている (1)。ページ下の ボックスプロットとの重ね合わせ で見るとはっきりわかる。

geom_violin に trim = FALSE を入れると、このように上下に伸びた図が作れる。これは見た目はかっこいいのだが、上端、下端が最大値、最小値を意味しなくなる ので注意が必要である。

ggplotで作ったviolinプロット

バイオリンプロットに色をつける

方法は ggplot で棒グラフに色をつける場合と全く同じである。

色をつけたいときは、aes の中で fill を指定する。fill = feed を指定しているので、feed に応じて色をつける、つまり 6 種類の色がつくことになる。他に何も指定しなければ、色は自動で割り振られる。

ggplotで作ったviolinプロット

手動で色を設定する

chickwts の feed 列に上から並んでいる順ということで、horsebean, linseed, soybean を赤に、sunflower, meatmeal, casein を青にしてみる。

まず、色を指定するカラムを chickwts に追加しなければならない。color という名前にする。mutate() 関数 を使って追加。ちょっとカッコが多くなり見にくいが、これだと一発でグループ分けが可能。

ggplotで作ったviolinプロット

color というカラムを fill で指定する。

ggplotで作ったviolinプロット

バイオリンプロットの順番を変更する

これも棒グラフの場合と同じ。図にするデータフレームに order などという列を作って、x = reorder(feed, order) と指定すれば良い。

前の項で赤と青の色をつけたので、青 3 つ (casein, meatmeal, sunflower) を左側に持っていってみよう。

join() 関数 を使って、こんなふうに列を追加することもできる。

まず、順番を指定したデータフレームを作る。

ggplotで作ったviolinプロット

これを chickwt2 と join で組み合わせると、うまい具合に番号が割り振られる。

ggplotで作ったviolinプロット

あとは reorder を含めて図にするだけ。

ggplotで作ったviolinプロット

バイオリンプロットにボックスプロットを重ねる

グラフの重ね合わせは、+ でもう一つグラフを追加すればよい。

ggplotで作ったviolinプロット
広告

References

  1. 【R初心者向け】ggplot2でバイオリンプロット(violin plot)を描く. Link: Last access 2024/07/21.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。

このページの目次

1. 概要 2. 色をつける
  ・手動で
3. ボックスプロットと