2024-03-29基因型分布畫出箱線圖標(biāo)注顯著性

GWAS分析后笆环,顯著性的SNP,我們想把不同的分型在群體里面的表型進(jìn)行可視化嘶居,現(xiàn)在最流行的方法是箱線圖+散點圖+顯著性標(biāo)識罪帖,類似的圖片如下:


圖片.png

上面A、B邮屁、C是三種基因型整袁,比如AA、AT佑吝、TT坐昙,可以看到A分型顯著低于B和C分型,B和C分型之間差異不顯著芋忿。這個圖包括:箱線圖+散點圖+顯著性炸客,非常直觀,一圖勝千言戈钢。

除了上面的上面的需求痹仙,我們還有其他的圖可以繪制,具體匯總?cè)缦拢?/p>

本節(jié)要實現(xiàn)下面截個圖:

「單因素二水平T檢驗箱線圖可視化」


圖片.png

「單因素三水平T檢驗箱線圖可視化」


圖片.png

「單因素三水平柱形圖」
圖片.png

「單因素三水平折線圖」


圖片.png

「二因素柱形圖」
圖片.png

「二因素折線圖」
圖片.png
  1. 單因素二水平
    這種試驗殉了,比如有兩個品種开仰,株高的差異,每個品種調(diào)查了10株,就構(gòu)成了這樣的試驗數(shù)據(jù)众弓。

「模擬數(shù)據(jù):」

set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
dd = data.frame(Group = rep(c("A","B"),each=10),y = c(y1,y2))
dd
str(dd)
dd$Group = as.factor(dd$Group)

「數(shù)據(jù):」

> dd
   Group         y
1      A  4.439524
2      A  4.769823
3      A  6.558708
4      A  5.070508
5      A  5.129288
6      A  6.715065
7      A  5.460916
8      A  3.734939
9      A  4.313147
10     A  4.554338
11     B 16.224082
12     B 15.359814
13     B 15.400771
14     B 15.110683
15     B 14.444159
16     B 16.786913
17     B 15.497850
18     B 13.033383
19     B 15.701356
20     B 14.527209

這里恩溅,使用的是ggpubr包進(jìn)行繪圖:
1.1 繪制箱線圖

library(ggplot2)
library(ggpubr)
ggboxplot(dd,x = "Group",y = "y")
圖片.png

1.2 箱線圖添加不同顏色

ggboxplot(dd,x = "Group",y = "y",color = "Group")
圖片.png

1.3 箱線圖添加散點圖

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")
圖片.png

1.4 箱線圖+散點圖+顯著性水平
這里,默認(rèn)的統(tǒng)計方法是非參數(shù)統(tǒng)計Wilcoxon谓娃,如果想用t.test脚乡,見下面操作

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means()
圖片.png

1.5 用t.test作為統(tǒng)計方法

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means(method = "t.test")
圖片.png

1.6 直接輸出顯著性

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means(method = "t.test",label = "p.signif")
圖片.png
  1. 單因素三水平
    二個水平可以用T檢驗,三個水平或者多個水平的數(shù)據(jù)傻粘,如何檢驗?zāi)兀?/li>

「模擬數(shù)據(jù):」

# 構(gòu)建三個水平 ANOVA
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
y3 = rnorm(10) + 15

dd = data.frame(Group = rep(c("A","B","C"),each=10),y = c(y1,y2,y3))
dd
str(dd)
dd$Group = as.factor(dd$Group)

「數(shù)據(jù)如下:」

> dd
   Group         y
1      A  4.439524
2      A  4.769823
3      A  6.558708
4      A  5.070508
5      A  5.129288
6      A  6.715065
7      A  5.460916
8      A  3.734939
9      A  4.313147
10     A  4.554338
11     B 16.224082
12     B 15.359814
13     B 15.400771
14     B 15.110683
15     B 14.444159
16     B 16.786913
17     B 15.497850
18     B 13.033383
19     B 15.701356
20     B 14.527209
21     C 13.932176
22     C 14.782025
23     C 13.973996
24     C 14.271109
25     C 14.374961
26     C 13.313307
27     C 15.837787
28     C 15.153373
29     C 13.861863
30     C 16.253815

2.1 箱線圖+散點圖

p = ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") 
p
圖片.png

2.2 箱線圖+散點圖+顯著性

p + stat_compare_means(method = "anova")
圖片.png

2.3 兩兩之間顯著性繪制

my_comparisons = list( c("A", "B"), c("A", "C"), c("B", "C") )
p + stat_compare_means(comparisons = my_comparisons,
                       # label = "p.signif",
                       method = "t.test")
圖片.png

2.4 顯示顯著性

p + stat_compare_means(comparisons = my_comparisons,
                       label = "p.signif",
                       method = "t.test")
  1. 兩因素數(shù)據(jù)
    「模擬數(shù)據(jù):」
# 兩個因素的數(shù)據(jù)
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 8
y3 = rnorm(10) + 7
y4 = rnorm(10) + 15
y5 = rnorm(10) + 18
y6 = rnorm(10) + 17

dd = data.frame(Group1 = rep(c("A","B","C"),each=10),
                Group2 = rep(c("X","Y"),each=30),
                y = c(y1,y2,y3,y4,y5,y6))
dd
str(dd)
dd$Group1 = as.factor(dd$Group1)
dd$Group2 = as.factor(dd$Group2)
str(dd)

「數(shù)據(jù)預(yù)覽:」

> dd
   Group1 Group2         y
1       A      X  4.439524
2       A      X  4.769823
3       A      X  6.558708
4       A      X  5.070508
5       A      X  5.129288
6       A      X  6.715065
7       A      X  5.460916
8       A      X  3.734939
9       A      X  4.313147
10      A      X  4.554338
11      B      X  9.224082
12      B      X  8.359814
13      B      X  8.400771
14      B      X  8.110683
15      B      X  7.444159
16      B      X  9.786913
17      B      X  8.497850
18      B      X  6.033383
19      B      X  8.701356
20      B      X  7.527209
21      C      X  5.932176
22      C      X  6.782025
23      C      X  5.973996
24      C      X  6.271109
25      C      X  6.374961
26      C      X  5.313307
27      C      X  7.837787
28      C      X  7.153373
29      C      X  5.861863
30      C      X  8.253815
31      A      Y 15.426464
32      A      Y 14.704929
33      A      Y 15.895126
34      A      Y 15.878133
35      A      Y 15.821581
36      A      Y 15.688640
37      A      Y 15.553918
38      A      Y 14.938088
39      A      Y 14.694037
40      A      Y 14.619529
41      B      Y 17.305293
42      B      Y 17.792083
43      B      Y 16.734604
44      B      Y 20.168956
45      B      Y 19.207962
46      B      Y 16.876891
47      B      Y 17.597115
48      B      Y 17.533345
49      B      Y 18.779965
50      B      Y 17.916631
51      C      Y 17.253319
52      C      Y 16.971453
53      C      Y 16.957130
54      C      Y 18.368602
55      C      Y 16.774229
56      C      Y 18.516471
57      C      Y 15.451247
58      C      Y 17.584614
59      C      Y 17.123854
60      C      Y 17.215942

3.1 繪制分組箱線圖

p = ggboxplot(dd,x = "Group1",y="y",color = "Group2",
              add = "jitter")
p
圖片.png

3.2 增加P值

p + stat_compare_means(aes(group = Group2),method = "t.test")
圖片.png

3.3 修改為顯著性結(jié)果

p + stat_compare_means(aes(group = Group2),method = "t.test",label = "p.signif")

圖片.png

3.4 將分組數(shù)據(jù)分開繪制

p = ggboxplot(dd,x = "Group2",y="y",color = "Group1",
              add = "jitter",facet.by = "Group1")
p
圖片.png

3.5 分組顯示統(tǒng)計檢驗

p + stat_compare_means(method = "t.test")
圖片.png

3.6 分組顯示顯著性結(jié)果

p + stat_compare_means(method = "t.test",label = "p.signif",label.y = 17)

圖片.png
  1. 單因素直方圖繪制

直方圖+標(biāo)準(zhǔn)誤每窖,之前用ggplot2需要很長的代碼,這里有更好的方案弦悉。
4.1 直方圖+標(biāo)準(zhǔn)誤

p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group1")
p
圖片.png

4.2 直方圖+標(biāo)準(zhǔn)誤+顯著性

p + stat_compare_means(method = "anova",,label.y = 15)+ 
  stat_compare_means(comparisons = my_comparisons)
圖片.png
  1. 單因素折線圖繪制
    5.1 折線圖+標(biāo)準(zhǔn)誤
p = ggline(dd,x = "Group1",y = "y",add = "mean_se")
p
圖片.png

5.2 折線圖+標(biāo)準(zhǔn)誤+顯著性

p + stat_compare_means(method = "anova",,label.y = 15)+ 
  stat_compare_means(comparisons = my_comparisons)
圖片.png
  1. 二因素直方圖繪制
    6.1 直方圖+標(biāo)準(zhǔn)誤
p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
圖片.png

6.2 直方圖+標(biāo)準(zhǔn)誤+顯著性

p + stat_compare_means(aes(group=Group2), label = "p.signif")

圖片.png
  1. 二因素折線圖繪制
    7.1 折線圖+標(biāo)準(zhǔn)誤
p = ggline(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
圖片.png

7.2 折線圖+標(biāo)準(zhǔn)誤+顯著性

p + stat_compare_means(aes(group=Group2), label = "p.signif")
圖片.png
  1. 代碼匯總
    下面代碼是所有代碼的匯總窒典,里面包括生成數(shù)據(jù),做不同類型的圖稽莉。只需要將數(shù)據(jù)整理為這種格式瀑志,就可以出圖了,對于初學(xué)者而言污秆,是最簡單最快捷的方法劈猪。show you the code!
# > 歡迎關(guān)注我的公眾號:`育種數(shù)據(jù)分析之放飛自我`良拼。主要分享R語言战得,Python,育種數(shù)據(jù)分析庸推,生物統(tǒng)計常侦,數(shù)量遺傳學(xué),混合線性模型贬媒,GWAS和GS相關(guān)的知識聋亡。

# 構(gòu)建兩個水平 T-test
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
dd = data.frame(Group = rep(c("A","B"),each=10),y = c(y1,y2))
dd
str(dd)
dd$Group = as.factor(dd$Group)

library(ggplot2)
library(ggpubr)
ggboxplot(dd,x = "Group",y = "y")
ggboxplot(dd,x = "Group",y = "y",color = "Group")
ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter")
ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means()

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means(method = "t.test")

ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") + 
  stat_compare_means(method = "t.test",label = "p.signif")




# 構(gòu)建三個水平 ANOVA
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 15
y3 = rnorm(10) + 15

dd = data.frame(Group = rep(c("A","B","C"),each=10),y = c(y1,y2,y3))
dd
str(dd)
dd$Group = as.factor(dd$Group)

p = ggboxplot(dd,x = "Group",y = "y",color = "Group",add = "jitter") 
p
p + stat_compare_means(method = "anova")


# Perorm pairwise comparisons
# compare_means(y ~ Group,  data = dd,method = "anova")

my_comparisons = list( c("A", "B"), c("A", "C"), c("B", "C") )
p + stat_compare_means(comparisons = my_comparisons,
                       # label = "p.signif",
                       method = "t.test")

p + stat_compare_means(comparisons = my_comparisons,
                       label = "p.signif",
                       method = "t.test")

# 兩個因素的數(shù)據(jù)
set.seed(123)
y1 = rnorm(10) + 5
y2 = rnorm(10) + 8
y3 = rnorm(10) + 7
y4 = rnorm(10) + 15
y5 = rnorm(10) + 18
y6 = rnorm(10) + 17

dd = data.frame(Group1 = rep(c("A","B","C"),each=10),
                Group2 = rep(c("X","Y"),each=30),
                y = c(y1,y2,y3,y4,y5,y6))
dd
str(dd)
dd$Group1 = as.factor(dd$Group1)
dd$Group2 = as.factor(dd$Group2)
str(dd)

## 分組查看
p = ggboxplot(dd,x = "Group1",y="y",color = "Group2",
              add = "jitter")
p
p + stat_compare_means(aes(group = Group2),method = "t.test")
p + stat_compare_means(aes(group = Group2),method = "t.test",label = "p.signif")

## 分組查看
p = ggboxplot(dd,x = "Group2",y="y",color = "Group1",
              add = "jitter",facet.by = "Group1")
p
p + stat_compare_means(method = "t.test")
p + stat_compare_means(method = "t.test",label = "p.signif",label.y = 17)


# 單分組
# 三水平直方圖
p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group1")
p
p + stat_compare_means(method = "anova",,label.y = 15)+ 
  stat_compare_means(comparisons = my_comparisons)

# 有誤差的折線圖
p = ggline(dd,x = "Group1",y = "y",add = "mean_se")
p
p + stat_compare_means(method = "anova",,label.y = 15)+ 
  stat_compare_means(comparisons = my_comparisons)


# 二分組
p = ggbarplot(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
p + stat_compare_means(aes(group=Group2), label = "p.signif")


# 有誤差的折線圖
p = ggline(dd,x = "Group1",y = "y",add = "mean_se",color = "Group2", position = position_dodge(0.8))
p
p + stat_compare_means(aes(group=Group2), label = "p.signif")

本文引自育種數(shù)據(jù)分析之放飛自我

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市际乘,隨后出現(xiàn)的幾起案子坡倔,更是在濱河造成了極大的恐慌,老刑警劉巖脖含,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罪塔,死亡現(xiàn)場離奇詭異,居然都是意外死亡器赞,警方通過查閱死者的電腦和手機(jī)垢袱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來港柜,“玉大人,你說我怎么就攤上這事∠淖恚” “怎么了爽锥?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畔柔。 經(jīng)常有香客問我氯夷,道長,這世上最難降的妖魔是什么靶擦? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任腮考,我火速辦了婚禮,結(jié)果婚禮上玄捕,老公的妹妹穿的比我還像新娘踩蔚。我一直安慰自己,他們只是感情好枚粘,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布馅闽。 她就那樣靜靜地躺著,像睡著了一般馍迄。 火紅的嫁衣襯著肌膚如雪福也。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天攀圈,我揣著相機(jī)與錄音暴凑,去河邊找鬼。 笑死赘来,一個胖子當(dāng)著我的面吹牛现喳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撕捍,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼拿穴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忧风?” 一聲冷哼從身側(cè)響起默色,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狮腿,沒想到半個月后腿宰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡缘厢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年吃度,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贴硫。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡椿每,死狀恐怖伊者,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情间护,我是刑警寧澤亦渗,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站汁尺,受9級特大地震影響法精,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痴突,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一搂蜓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辽装,春花似錦帮碰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至殷勘,卻和暖如春此再,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玲销。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工输拇, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贤斜。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓策吠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瘩绒。 傳聞我的和親對象是個殘疾皇子猴抹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容