今天繼續(xù) 跟著Nature Communications學(xué)畫圖 系列最后一篇。學(xué)習(xí)R語言ggplot2包畫箱線圖桑腮。對應(yīng)的是論文中的補充材料圖4泉哈。
對應(yīng)的 Nature Communications 的論文是 Fecal pollution can explain antibiotic resistance gene abundances in anthropogenically impacted environments
這篇論文數(shù)據(jù)分析和可視化的部分用到的數(shù)據(jù)和代碼全部放到了github上
https://github.com/karkman/crassphage_project
非常好的R語言學(xué)習(xí)素材。
第一步讀入數(shù)據(jù)
MG_RAST <- read.table("data/MG-RAST.txt")
接下來是對數(shù)據(jù)集的一些操作
- 首先是判斷crAss這一列哪一個位置是空值破讨,用到的是
is.na()
函數(shù)丛晦。然后挑選出空值所在的行的數(shù)據(jù)
MG_RAST_NocrAss <- MG_RAST[is.na(MG_RAST$crAss),]
下面這條命令稍微有點長,我們把它分開看提陶。
首先是subset()
函數(shù)烫沙,基本用法是可以向量,矩陣隙笆,數(shù)據(jù)框數(shù)據(jù)按照一定的條件進行過濾锌蓄,小例子
df<-data.frame(A=1:10,B=5:14)
subset(df,A<5)
統(tǒng)計MG_RAST_NocrAss數(shù)據(jù)集feature這一列各個變量出現(xiàn)的次數(shù),使用table()
函數(shù)仲器,table()
函數(shù)最基本的用法
> table(c("A","B","C","B","C","D"))
A B C D
1 2 2 1
接下來是names()
函數(shù)的用法
names(table(c("A","B","C","B","C","D")))
[1] "A" "B" "C" "D"
%in%的用法
> a<-c("A","B")
> b<-c("A","C","D")
> a%in%b
[1] TRUE FALSE
告訴你a中的元素是否在b中
所以今天的問題就來了
MG_RAST_NocrAss <- subset(MG_RAST_NocrAss, feature %in%
names(table(MG_RAST_NocrAss$feature)[table(MG_RAST_NocrAss$feature)>2]))
這行代碼起到了什么作用煤率,歡迎大家留言討論仰冠。
數(shù)據(jù)準備好了乏冀,接下來就是作圖了
最基本的箱線圖
ggplot(MG_RAST_NocrAss, aes(x=feature, y=rel_res)) +
geom_boxplot()
因為x軸的坐標軸標簽有重疊,現(xiàn)在是水平方向洋只,將其改個方向
ggplot(MG_RAST_NocrAss, aes(x=feature, y=rel_res)) +
geom_boxplot() +
theme(axis.text.x=element_text(angle=45, hjust=1, size=10))
更改一下x軸和y軸的標題
ggplot(MG_RAST_NocrAss, aes(x=feature, y=rel_res)) +
geom_boxplot() +
theme(axis.text.x=element_text(angle=45, hjust=1, size=10)) +
labs(y = "Normalized ARG abundance", x="")
更改一下主題
ggplot(MG_RAST_NocrAss, aes(x=feature, y=rel_res)) +
geom_boxplot() +
theme_minimal()+
theme(axis.text.x=element_text(angle=45, hjust=1, size=10)) +
labs(y = "Normalized ARG abundance", x="")
對y進行l(wèi)og10轉(zhuǎn)換辆沦,然后填充顏色
ggplot(MG_RAST_NocrAss, aes(x=feature, y=log10(rel_res))) +
geom_boxplot(aes(fill=feature)) +
theme_minimal()+
theme(axis.text.x=element_text(angle=45, hjust=1, size=10),
legend.position = "none") +
labs(y = "Normalized ARG abundance", x="")
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本