欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語(yǔ)言繪制帶ErrorBar的分組條形圖代碼的分享

 更新時(shí)間:2022年02月17日 10:51:41   作者:生信了  
本文介紹了如何用R畫(huà)出帶error?bar的分組條形圖,文中為大家分享了繪制的代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

筆者近期畫(huà)了一張帶error bar的分組條形圖,將相關(guān)的代碼分享一下。

感謝網(wǎng)友青山屋主的建議,提示筆者要嚴(yán)謹(jǐn)區(qū)分技術(shù)重復(fù)和生物學(xué)重復(fù),所以筆者對(duì)文章做修改后重發(fā)。如果各位有任何建議,歡迎指正。

本文旨在給出一種利用R對(duì)生物學(xué)重復(fù)數(shù)據(jù)畫(huà)帶error bar的分組條形圖的方法。

所用數(shù)據(jù)是模擬生成的:分成三個(gè)組,每個(gè)組進(jìn)行了若干次生物學(xué)重復(fù);測(cè)量的是3種基因的表達(dá)量。數(shù)據(jù)的部分內(nèi)容如下:

##       gene1    gene2    gene3  Group
## 1  49.72475 267.0007 126.2007 Group1
## 2 114.62184 173.8780 150.2641 Group2
## 3 128.03351 227.9456 152.6378 Group3
## 4 134.90841 385.1979 148.2739 Group1
## 5 136.56659 190.0663 122.6201 Group2
## 6 143.88241 329.0516 236.9131 Group3

兩種方法的完整代碼放在了文末。如有問(wèn)題,歡迎指正!

第一種實(shí)現(xiàn)方法:用aggregate計(jì)算數(shù)據(jù)

# 導(dǎo)入數(shù)據(jù)
setwd("E:/")
df <- read.csv("gene_exp.csv", header=T)
 
# 可以在這里改列名,這些列名就是最終圖上X軸的標(biāo)簽名。
colnames(df)[1:3] <- c("gene-1", "gene-2", "gene-3")
str(df) # 顯示數(shù)據(jù)集內(nèi)容
## 'data.frame':    3000 obs. of  4 variables:
##  $ gene-1: num  49.7 114.6 128 134.9 136.6 ...
##  $ gene-2: num  267 174 228 385 190 ...
##  $ gene-3: num  126 150 153 148 123 ...
##  $ Group : Factor w/ 3 levels "Group1","Group2",..: 1 2 3 1 2 3 1 2 3 1 ...
# 將上述"寬數(shù)據(jù)"轉(zhuǎn)化為"長(zhǎng)數(shù)據(jù)"
library(reshape2)
df_reshape <- melt(df, id.vars=c("Group"))
str(df_reshape)
## 'data.frame':    9000 obs. of  3 variables:
##  $ Group   : Factor w/ 3 levels "Group1","Group2",..: 1 2 3 1 2 3 1 2 3 1 ...
##  $ variable: Factor w/ 3 levels "gene-1","gene-2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ value   : num  49.7 114.6 128 134.9 136.6 ...
# 獲取三個(gè)組各個(gè)基因表達(dá)量的平均值
df_mean <- aggregate(df_reshape$value, list(Group=df_reshape$Group,
                        gene=df_reshape$variable), mean, na.rm=T)
 
# 獲取三個(gè)組各個(gè)基因表達(dá)量的標(biāo)準(zhǔn)差
df_sd <- aggregate(df_reshape$value, list(Group=df_reshape$Group,
                        gene=df_reshape$variable), sd, na.rm=T)
 
# 合并mean和sd
colnames(df_mean)[3] <- "mean"
colnames(df_sd)[3] <- "sd"
df_stat <- merge(df_mean, df_sd, by=c("Group", "gene"))
str(df_stat)
## 'data.frame':    9 obs. of  4 variables:
##  $ Group: Factor w/ 3 levels "Group1","Group2",..: 1 1 1 2 2 2 3 3 3
##  $ gene : Factor w/ 3 levels "gene-1","gene-2",..: 1 2 3 1 2 3 1 2 3
##  $ mean : num  120 249 149 119 250 ...
##  $ sd   : num  19.4 51.4 30.2 21.2 52.3 ...
# 畫(huà)圖
#直接在畫(huà)圖的語(yǔ)句中計(jì)算出error_bar所需的數(shù)據(jù):
#(即下面的ymin=mean-sd和ymax=mean+sd語(yǔ)句)。
library(ggplot2)
dodge <- position_dodge(width=.9)
ggplot(data=df_stat) +
  geom_bar(aes(x=gene, y=mean, fill=Group), 
           stat="identity", position=dodge) +
  geom_errorbar(aes(x=gene, ymin=mean-sd, ymax=mean+sd, color=Group), 
                stat="identity", position=dodge, width=.3)

第二種實(shí)現(xiàn)方法:用dplyr包計(jì)算數(shù)據(jù)

# 導(dǎo)入數(shù)據(jù)
setwd("E:/")
df <- read.csv("gene_exp.csv", header=T)
 
# 可以在這里改列名,這些列名就是最終圖上X軸的標(biāo)簽名。
colnames(df)[1:3] <- c("gene-1", "gene-2", "gene-3")
str(df) # 顯示數(shù)據(jù)集內(nèi)容
## 'data.frame':    3000 obs. of  4 variables:
##  $ gene-1: num  49.7 114.6 128 134.9 136.6 ...
##  $ gene-2: num  267 174 228 385 190 ...
##  $ gene-3: num  126 150 153 148 123 ...
##  $ Group : Factor w/ 3 levels "Group1","Group2",..: 1 2 3 1 2 3 1 2 3 1 ...
# 獲取三個(gè)組各個(gè)基因表達(dá)量的平均值和標(biāo)準(zhǔn)差
library(tidyr)
library(dplyr)
df_stat <- tbl_df(df) %>%
  gather(gene, value, -Group) %>%  # 將"寬數(shù)據(jù)"轉(zhuǎn)化為"長(zhǎng)數(shù)據(jù)"
  group_by(Group, gene) %>%         # 將數(shù)據(jù)分組
  summarise(mean=mean(value, na.rm=T), sd=sd(value, na.rm=T)) %>% # 計(jì)算每組數(shù)據(jù)的mean和sd
  ungroup()
str(df_stat)
## Classes 'tbl_df', 'tbl' and 'data.frame':    9 obs. of  4 variables:
##  $ Group: Factor w/ 3 levels "Group1","Group2",..: 1 1 1 2 2 2 3 3 3
##  $ gene : chr  "gene-1" "gene-2" "gene-3" "gene-1" ...
##  $ mean : num  120 249 149 119 250 ...
##  $ sd   : num  19.4 51.4 30.2 21.2 52.3 ...
# 畫(huà)圖
#直接在畫(huà)圖的語(yǔ)句中計(jì)算出error_bar所需的數(shù)據(jù):
#(即下面的ymin=mean-sd和ymax=mean+sd語(yǔ)句)。
library(ggplot2)
dodge <- position_dodge(width=.9)
df_stat %>% ggplot() +
  geom_bar(aes(x=gene, y=mean, fill=Group), 
           stat="identity", position=dodge) +
  geom_errorbar(aes(x=gene, ymin=mean-sd, ymax=mean+sd, color=Group), 
                stat="identity", position=dodge, width=.3)

兩種方法的結(jié)果是一樣的,相對(duì)而言,dplyr的實(shí)現(xiàn)方法更簡(jiǎn)單快捷。

最后,兩種方法的完整代碼如下:

#################第一種實(shí)現(xiàn)方法:用aggregate計(jì)算數(shù)據(jù)######################
# 導(dǎo)入數(shù)據(jù)
setwd("E:/")
df <- read.csv("gene_exp.csv", header=T)
 
# 可以在這里改列名,這些列名就是最終圖上X軸的標(biāo)簽名。
colnames(df)[1:3] <- c("gene-1", "gene-2", "gene-3")
str(df) # 顯示數(shù)據(jù)集內(nèi)容
 
# 將上述"寬數(shù)據(jù)"轉(zhuǎn)化為"長(zhǎng)數(shù)據(jù)"
library(reshape2)
df_reshape <- melt(df, id.vars=c("Group"))
str(df_reshape)
 
# 獲取三個(gè)組各個(gè)基因表達(dá)量的平均值
df_mean <- aggregate(df_reshape$value, list(Group=df_reshape$Group,
                        gene=df_reshape$variable), mean, na.rm=T)
 
# 獲取三個(gè)組各個(gè)基因表達(dá)量的標(biāo)準(zhǔn)差
df_sd <- aggregate(df_reshape$value, list(Group=df_reshape$Group,
                        gene=df_reshape$variable), sd, na.rm=T)
 
# 合并mean和sd
colnames(df_mean)[3] <- "mean"
colnames(df_sd)[3] <- "sd"
df_stat <- merge(df_mean, df_sd, by=c("Group", "gene"))
str(df_stat)
 
# 畫(huà)圖
#直接在畫(huà)圖的語(yǔ)句中計(jì)算出error_bar所需的數(shù)據(jù):
#(即下面的ymin=mean-sd和ymax=mean+sd語(yǔ)句)。
library(ggplot2)
dodge <- position_dodge(width=.9)
ggplot(data=df_stat) +
  geom_bar(aes(x=gene, y=mean, fill=Group), 
           stat="identity", position=dodge) +
  geom_errorbar(aes(x=gene, ymin=mean-sd, ymax=mean+sd, color=Group), 
                stat="identity", position=dodge, width=.3)
 
####################第二種實(shí)現(xiàn)方法:用dplyr包計(jì)算數(shù)據(jù)######################
# 導(dǎo)入數(shù)據(jù)
setwd("E:/")
df <- read.csv("gene_exp.csv", header=T)
 
# 可以在這里改列名,這些列名就是最終圖上X軸的標(biāo)簽名。
colnames(df)[1:3] <- c("gene-1", "gene-2", "gene-3")
str(df) # 顯示數(shù)據(jù)集內(nèi)容
 
# 獲取三個(gè)組各個(gè)基因表達(dá)量的平均值和標(biāo)準(zhǔn)差
library(tidyr)
library(dplyr)
df_stat <- tbl_df(df) %>%
  gather(gene, value, -Group) %>%  # 將"寬數(shù)據(jù)"轉(zhuǎn)化為"長(zhǎng)數(shù)據(jù)"
  group_by(Group, gene) %>%         # 將數(shù)據(jù)分組
  summarise(mean=mean(value, na.rm=T), sd=sd(value, na.rm=T)) %>% # 計(jì)算每組數(shù)據(jù)的mean和sd
  ungroup()
str(df_stat)
 
# 畫(huà)圖
#直接在畫(huà)圖的語(yǔ)句中計(jì)算出error_bar所需的數(shù)據(jù):
#(即下面的ymin=mean-sd和ymax=mean+sd語(yǔ)句)。
library(ggplot2)
dodge <- position_dodge(width=.9)
df_stat %>% ggplot() +
  geom_bar(aes(x=gene, y=mean, fill=Group), 
           stat="identity", position=dodge) +
  geom_errorbar(aes(x=gene, ymin=mean-sd, ymax=mean+sd, color=Group), 
                stat="identity", position=dodge, width=.3)

以上就是 R語(yǔ)言繪制帶ErrorBar的分組條形圖代碼的分享的詳細(xì)內(nèi)容,更多關(guān)于 R語(yǔ)言繪制帶ErrorBar的分組條形圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • R語(yǔ)言利用barplot()制作條形圖的各種實(shí)例

    R語(yǔ)言利用barplot()制作條形圖的各種實(shí)例

    這篇文章主要給大家介紹了關(guān)于R語(yǔ)言利用barplot()制作條形圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語(yǔ)言ggplot2包之注釋方式

    R語(yǔ)言ggplot2包之注釋方式

    這篇文章主要介紹了R語(yǔ)言ggplot2包之注釋方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言 data.frame()命令的使用說(shuō)明

    R語(yǔ)言 data.frame()命令的使用說(shuō)明

    這篇文章主要介紹了R語(yǔ)言 data.frame()命令的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言 install.packages 無(wú)法讀取索引的解決方案

    R語(yǔ)言 install.packages 無(wú)法讀取索引的解決方案

    這篇文章主要介紹了R語(yǔ)言 install.packages 無(wú)法讀取索引的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言:排序的應(yīng)用操作

    R語(yǔ)言:排序的應(yīng)用操作

    這篇文章主要介紹了R語(yǔ)言:排序的應(yīng)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言函數(shù)基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    R語(yǔ)言函數(shù)基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于R語(yǔ)言函數(shù)基礎(chǔ)知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-04-04
  • R語(yǔ)言關(guān)于泊松回歸知識(shí)點(diǎn)總結(jié)

    R語(yǔ)言關(guān)于泊松回歸知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于R語(yǔ)言關(guān)于泊松回歸知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-05-05
  • 使用ggsignif優(yōu)雅添加顯著性標(biāo)記詳解

    使用ggsignif優(yōu)雅添加顯著性標(biāo)記詳解

    這篇文章主要為大家介紹了使用ggsignif優(yōu)雅添加顯著性標(biāo)記詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • R語(yǔ)言中set.seed()函數(shù)的作用詳解

    R語(yǔ)言中set.seed()函數(shù)的作用詳解

    set.seed()括號(hào)里面的參數(shù)可以是任意數(shù)字,是代表你設(shè)置的第幾號(hào)種子而已,不會(huì)參與運(yùn)算,是個(gè)標(biāo)記而已。,這篇文章主要介紹了R語(yǔ)言中set.seed()函數(shù)的作用,需要的朋友可以參考下
    2022-09-09
  • R語(yǔ)言繪圖-點(diǎn)圖dot plot

    R語(yǔ)言繪圖-點(diǎn)圖dot plot

    這篇文章主要介紹了R語(yǔ)言繪圖-點(diǎn)圖dot plot案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論