例えば、Tgマウス(例はPdと記載)とWTマウスの解析で、
- 1つのグラフ内でオス(M)とメス(F)毎に固めて表示
- 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群が独立して表示される。
これを、「オスとメスとで固めて表示したい」場合。
グループ化用の列を作る
まずはグループ化用の列(今回は性別 (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をまとめたい場合は、
- aes の "x=" の部分に、グループ化したい "Sex" を指定(fill は genotype毎に色を変えたいので "Group" を指定
- 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"))
性別毎にグループ化された↓
特定のカテゴリ別にグラフを分けて表示
特定のカテゴリ別にグラフを分けて表示する場合には、
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"))
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 毎にグラフを分ける。