2
1

More than 3 years have passed since last update.

ggplot2を使用して棒グラフ+エラーバー+ドットプロットを描く

Last updated at Posted at 2021-06-26

(2021.7.2修正 データフレームを2つ使用してプロットを重ねる手法を示していましたが、ggplotのstat_summaryで求めた統計値を用いる手法に変更しています)

近年、生物科学分野ではデータの透明性が求められており、実験結果の平均値や分布を示す棒グラフとエラーバーだけではなく、個別データをプロットした図が求められるようになりました。

こういった図はGraphPad Prism (https://www.graphpad.com) などのアプリケーションを使用すれば比較的容易に描くことができますが、有料ですし、使用できるとしても研究室の共用端末でしか使用できないことも多いでしょう。

本記事ではRのggplotを使用し、下記のような棒グラフ+エラーバー+ドットプロットを描出する手法ついて述べます。

plot.jpeg

本記事の手法では、可能な限りそのまま論文に使用できるビジュアルにすることを目指しました。

準備

まずパッケージを読み込みます。

library(ggplot2)

今回使用するテストデータを作成します。
野生型(WT)とノックアウト(KO)の測定値(value)として、次のようなデータフレームがあるとします。

# シードを固定
set.seed(1234) 

# factor型で並び順を指定
genotype <- factor(c(rep("WT", 10), rep("KO", 10)), 
                   level = c("WT", "KO")) 

# 正規分布乱数生成。KO群の平均値と標準偏差を大きめに設定
value <- c(rnorm(10, mean = 10, sd = 2), 
           rnorm(10, mean = 15, sd = 3))

# データフレーム作成
df <- data.frame(genotype = genotype,
                 value = value) 
df

図の描出

p <- ggplot(df, aes(x = genotype, y = value, fill = genotype))+
 # stat_summaryで得られた平均値を用いて棒グラフを描出
  stat_summary(fun = "mean", geom = "bar", width = .6) +
  scale_fill_manual(values = c("lightgrey", "darkgrey"))+
 # stat_summary で得られた平均値と標準偏差を用いてエラーバーを描出
  stat_summary(fun.max = function(x) mean(x) + sd(x), 
               fun.min = function(x) mean(x) - sd(x), 
               geom = 'errorbar', width = .3)+
 # dfの個別データをドットプロットで描出
  geom_jitter(aes(shape = genotype), width = .2, size = 3)+
 # y軸の範囲を設定、プロット領域の拡張をゼロに設定することで棒グラフが浮かないようにする
  scale_y_continuous(expand = c(0, 0), limits = c(0, max(df$value)*1.5))+ 
 # 体裁を整える。classicだけではいくつかの部品の色が黒ではないため、修正。凡例はお好みで。
  theme_classic()+ 
  theme(axis.title = element_text(size = 10),
        axis.text = element_text(size = 10, color = "black"),
        axis.ticks = element_line(color = "black"),
        legend.position = "none")+
 # ラベル
  labs(x = NULL, y = "value")
p

plot.jpeg

少し上にスペースを広めにとっているのは必要に応じて凡例やP値などを追加するためです。

図の保存

作成した図を保存します。PDFをIllustratorで読み込めば、埋め込み後に部品にバラして体裁を整えることが可能です。

ggsave("plot.pdf", p)

まとめ

本記事はggplotを用いて棒グラフ+エラーバー+ドットプロットを描く方法を示しました。より良い方法があればぜひフィードバックをいただけると幸いです。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1