見出し画像

【R言語】3群以上の棒グラフを描く①ggplot2のコードを思い出す

こんにちは。Rで多群比較検定のコードをずーっとコツコと書いてきたえいこです。書き終わって一安心。

次は、グラフを描いていきます。

とりあえず二群比較で培った、ggplot2のノウハウを使ってザーッと描いてみて、修正が必要な箇所を少しずつ修正して行こうと思います。

二群比較で描いたグラフはこちら。

では早速、なにも考えずコード丸写しでどうなるかやってみましょう。

2群比較のコードは多群比較に使えるのか?

有意差検定をするところはへんになる可能性が高いので今回は棒グラフとドットプロットだけを描いていきます。

まずは、データの平均値や標準偏差などのリストを作成しましょう。

二群検定の時にもやっているので、詳しい説明は割愛します。

dplyrを使ってリストを作りました。

data_mean_sd <- 
 data %>%
 group_by(order) %>% 
 summarize(mean = mean(value), sd = sd(value), count=n()) %>% 
 mutate(group=levels)
data_mean_sd

こんな感じ。二群検定と少し違うところは、groupの名前のほかに”order”と言うグラフを書く順番を指定するための列を付け加えたことです。

levelsという引数は、”group”の名前のことでcontrolがある場合は、controlを先頭にして読み込んだグループの順番になるようにしてあります。

作ったリストを見てみると...

画像1

orderが一列目になっていて、グラフを作るのに必要な情報と、最後にgroupの対応がされています。

基本的には”order”を使って棒グラフを描いてきます。(最後にgroupに変換します)

あとは、二群検定と同じようにコードを書いていくだけ。(コピペです)

前回と変えているところは、グラフの色を”color”という変数に、X軸ラベルを”xlab”、Y軸ラベルを”ylab”という変数に入れているところです。(あとは基本的に同じ)

library(ggplot2) #call ggplot2

#error-bar
errors <- aes(ymax = mean + sd, ymin = mean - sd)

#set the ymax
ylim=(max(data$value)+ sd(data$value))*1.2

#set the color of the graph
color<- c("white", "gray", "black")

#names of xlab and ylab
xlab <- “”
ylab <- “values”

#prepare the graph field
graph<- ggplot(data=data_mean_sd,
              aes(x= order, 
                  y=mean)) 

#make the labels
graph<- graph+
 labs(x=xlab, y=ylab,
      shape="", fill="")+
 scale_y_continuous(expand = c(0,0), limits = c(0,ylim))+
 theme_classic()

#draw the plots
graph<-graph+
 geom_bar(
   aes(fill=order),
   stat="identity", 
   color="black",
   position="dodge"
 )+
 scale_fill_manual(values=color)+
 geom_errorbar(
   errors,
   width=0.17
 ) 
graph

出力すると、

画像2

グラフは描けました!

ついでに、ドットプロットも重ねてみましょう。

shape<- c(16,16,16)

#draw dot plot
graph<- graph+
 geom_jitter(data=data,
             aes(x = order,
                 y = value,
                 shape = order),
             stat= "identity",
             size=2.5,
             position = position_jitter(0.17))+
 scale_shape_manual(values = shape)
graph

画像3

cの黒は失敗だった...(ドットが見えない)

でも、棒グラフもドットプロットも重ねられるようになりました!

これからやることを洗い出す

とりあえず描けたのは良いのですがまだまだ...

① ”a”、”b”、”c”をグループの名前に変える
② グラフの色をセンスのある色に変える
③検定の結果をグラフに反映させる

次回から、順番に取り組んでいきます。


それでは、また!

最後までお読みいただきありがとうございます。よろしければ「スキ」していただけると嬉しいです。 いただいたサポートはNGS解析をするための個人用Macを買うのに使いたいと思います。これからもRの勉強過程やワーママ研究者目線のリアルな現実を発信していきます。