r-errorbar-3

例えば、Tgマウス(例はPdと記載)とWTマウスの解析で、

  1. 1つのグラフ内でオス(M)とメス(F)毎に固めて表示
  2. Region(Ipsi-Hipp, Ipsi-Ctx, Cont-Hipp, Cont-Ctx)毎に複数のグラフに分けて表示

したい場合の備忘録。

1つのグラフ内でオス(M)とメス(F)毎に固めて表示

オスとメスに分けて解析したい場合。

Group という列を作って、"WTM", "PdM", "WTF", "PdF" でカテゴライズして ggplot で棒グラフを作ると、

ggplot(aes(x = Group, y = mean_NFT, fill = Group)) +
geom_col(position = "dodge", colour = "black") +
geom_errorbar(aes(ymax = mean_NFT + sem_NFT, ymin = mean_NFT - sem_NFT), position = position_dodge(0.9), width = 0.2, size = 0.75) +
#scale_x_discrete(limit = c("M", "F")) +
scale_fill_discrete(limit = c("WTM", "PdM", "WTF", "PdM")) +
scale_fill_manual(values = c("#2980B9", "#154360", "#CB4335", "#641E16"))

こんな感じに4群が独立して表示される。

grouping-2

これを、「オスとメスとで固めて表示したい」場合。

グループ化用の列を作る

まずはグループ化用の列(今回は性別 (M or F))を作る。

今回は、"PdM", "WTM","PdF", "WTF" のグループで、

右端の記号

  • "M" が オス
  • "F" が メス

を意味しているので、

dplyr の "mutate" と "string" を使って、
dplyr::mutate(Sex = substring(列名, 開始番号, 終了番号))
という形で "Sex" という列を追加する。
mutate(Data_NFT_sum, Sex = substring(Group, 3, 3))

グループ化して表示:

性別毎にbarをまとめたい場合は、

  1. aes の "x=" の部分に、グループ化したい "Sex" を指定(fill は genotype毎に色を変えたいので "Group" を指定
  2. geom_col を追加して、position を "dodge" に指定
Data_NFT_sum %>%
filter(Region == "Ipsi-Ctx") %>%
ggplot(aes(x = Sex, y = mean_NFT, fill = Group)) +                          # "x=" の部分に "Sex" を指定
geom_col(position = "dodge", colour = "black", size = 0.75) +               # "geom_col" を追加して、"position" に "dodge" を指定
geom_errorbar(aes(ymax = mean_NFT + sem_NFT, ymin = mean_NFT - sem_NFT), position = position_dodge(0.9), width = 0.2,
size = 0.75) +
labs(title = "NFTs", x = "Genotype", y = "% area of AT8+ NFTs", fill="Genotype") +
scale_x_discrete(limit = c("M", "F")) +
scale_fill_discrete(limit = c("WTM", "PdM", "WTF", "PdM")) +
scale_fill_manual(values = c("#2980B9", "#154360", "#CB4335", "#641E16"))

性別毎にグループ化された↓

grouping-1

特定のカテゴリ別にグラフを分けて表示

特定のカテゴリ別にグラフを分けて表示する場合には、

facet_wrap()
を使う。

facet_wrap 追加前↓

# bar graphs
Data_NFT_sum$Group <- factor(Data_NFT_sum$Group, levels=c("WTM", "PdM" , "WTF" , "PdF" ))
Data_NFT_sum$Region <- factor(Data_NFT_sum$Region, levels=c("Ipsi-Hipp", "Ipsi-Ctx" , "Cont-Hipp" , "Cont-Ctx" ))
Data_NFT_sum %>% ggplot(aes(x = reorder(x = Sex, X = Group), y = mean_NFT, fill = Group)) + geom_col(position =
"dodge", colour = "black", size = 0.75) + labs(title = "NFTs", x = "Genotype", y = "% area of AT8+ NFTs",
fill="Genotype") + scale_x_discrete(limit = c("M", "F")) + scale_fill_discrete(limit = c("WTM", "PdM", "WTF",
"PdM")) + scale_fill_manual(values = c("#2980B9", "#154360", "#CB4335", "#641E16"))
grouping-1

 

Facet_wrap 追加後↓

# bar graphs
Data_NFT_sum$Group <- factor(Data_NFT_sum$Group, levels=c("WTM", "PdM" , "WTF" , "PdF" ))
Data_NFT_sum$Region <- factor(Data_NFT_sum$Region, levels=c("Ipsi-Hipp", "Ipsi-Ctx" , "Cont-Hipp" , "Cont-Ctx" ))
Data_NFT_sum %>% ggplot(aes(x = reorder(x = Sex, X = Group), y = mean_NFT, fill = Group)) + geom_col(position =
"dodge", colour = "black", size = 0.75) + labs(title = "NFTs", x = "Genotype", y = "% area of AT8+ NFTs",
fill="Genotype") + scale_x_discrete(limit = c("M", "F")) + scale_fill_discrete(limit = c("WTM", "PdM", "WTF",
"PdM")) + scale_fill_manual(values = c("#2980B9", "#154360", "#CB4335", "#641E16")) +
Facet_wrap(~Region)   # Facet_wrap 追加して、Region 毎にグラフを分ける。
r-errorbar-3
にほんブログ村 科学ブログ 脳科学へ
にほんブログ村 子育てブログ ワーキングマザー育児へ

References