《Modern Statistics for Modern Biology》Chapter 三:R語言中的高質量圖形(3.5-3.6)

《Modern Statistics for Modern Biology》Chapter 一: 離散數(shù)據(jù)模型的預測(1.1 - 1.3)

《Modern Statistics for Modern Biology》Chapter 一: 離散數(shù)據(jù)模型的預測(1.4 - 1.5)

《Modern Statistics for Modern Biology》Chapter 二: 統(tǒng)計建模(2.1-2.3)

《Modern Statistics for Modern Biology》Chapter 二: 統(tǒng)計建模(2.4-2.5)

《Modern Statistics for Modern Biology》Chapter 二 統(tǒng)計建模(2.6 - 2.7)

《Modern Statistics for Modern Biology》Chapter 二 統(tǒng)計建模(2.8 - 2.9)

《Modern Statistics for Modern Biology》Chapter 二 統(tǒng)計建模(2.10 完結)

《Modern Statistics for Modern Biology》Chapter 三:R語言中的高質量圖形(3.1-3.4)

從這章開始最開始記錄一些markdown等小知識
$\hat{p}=\frac{1}{12}$\hat{p}=\frac{1}{12}
掌握R語言中的apply函數(shù)族
卡方檢驗
Hardy-Weinberg equilibrium( 哈迪-溫伯格平衡 )
帶你理解beta分布
簡單介紹一下R中的幾種統(tǒng)計分布及常用模型

  • 統(tǒng)計分布每一種分布有四個函數(shù):d――density(密度函數(shù))汹族,p――分布函數(shù),q――分位數(shù)函數(shù),r――隨機數(shù)函數(shù)淮腾。比如柬采,正態(tài)分布的這四個函數(shù)為dnorm录煤,pnorm典尾,qnorm墨技,rnorm惩阶。下面我們列出各分布后綴,前面加前綴d扣汪、p断楷、q或r就構成函數(shù)名:norm:正態(tài)t:t分布崭别,f:F分布冬筒,chisq:卡方(包括非中心) unif:均勻exp:指數(shù)茅主,weibull:威布爾舞痰,gamma:伽瑪beta:貝塔 lnorm:對數(shù)正態(tài)诀姚,logis:邏輯分布响牛,cauchy:柯西binom:二項分布赫段,geom:幾何分布呀打,hyper:超幾何nbinom:負二項糯笙,pois:泊松 signrank:符號秩贬丛,wilcox:秩和tukey:學生化極差
    如何預測一條序列是否含有CpG島
    圖片輸出盡量保存為矢量圖
    結合setNames函數(shù)與scale_fill_manual函數(shù)來指定ggplot2的填充顏色(Figure 3.13)
    要善于用stat_summary來自定義函數(shù)結合ggplot2進行繪圖

3.5 圖形語法

ggplot2的圖形語法的組成部分是

  • 一個或者多個數(shù)據(jù)集
  • 作為數(shù)據(jù)的可視表示的一個或多個幾何對象给涕,例如豺憔,點、直線够庙、矩形恭应、等高線
  • 描述如何將數(shù)據(jù)中的變量映射到幾何對象的視覺特性(美學)和相關的比例(例如:線性,對數(shù)耘眨,秩)
  • 一個或多個坐標系
  • 統(tǒng)計總結規(guī)則
  • 一種分面規(guī)范暮屡,即使用多個相似的子圖來查看相同數(shù)據(jù)的子集。
  • 影響布局和渲染的可選參數(shù)毅桃,如文本大小褒纲、字體和對齊方式、圖例位置钥飞。

下面的代碼針對相同的數(shù)據(jù)在同一圖形中使用三種類型的幾何對象:點莺掠、直線和置信帶。

> BiocManager::install("Biobase", version = "3.8")
> library("Hiiragi2013")
> data("x")
> dim(Biobase::exprs(x))
> dftx = data.frame(t(Biobase::exprs(x)), pData(x))
> ggplot( dftx, aes( x = X1426642_at, y = X1418765_at)) +
  geom_point( shape = 1 ) +
  geom_smooth( method = "loess" )
ggplot( dftx, aes( x = X1426642_at, y = X1418765_at ))  +
  geom_point( aes( color = sampleColour), shape = 19 ) +
  geom_smooth( method = "loess" ) +
  scale_color_discrete( guide = FALSE ) ## guide = FALSE 表示不添加圖例
  • 如果我們想找出哪些基因是這些探針標識符的目標读宙,以及它們可能做什么彻秆,我們可以這樣做:
> library("mouse4302.db")
> AnnotationDbi::select(mouse4302.db,
+    keys = c("1426642_at", "1418765_at"), keytype = "PROBEID",
+    columns = c("SYMBOL", "GENENAME"))
'select()' returned 1:1 mapping between keys and columns
     PROBEID SYMBOL                                            GENENAME
1 1426642_at    Fn1                                       fibronectin 1
2 1418765_at  Timd2 T cell immunoglobulin and mucin domain containing 2
  • 如果使用的是geom_smooth,那么ggplot2在默認情況下使用stat=“smooth”并顯示一條線结闸;如果使用geom_histogram唇兑,則對數(shù)據(jù)進行分bin,并以barplot格式顯示結果桦锄。這里有一個例子:
> dfx = as.data.frame(Biobase::exprs(x))
> ggplot(dfx, aes(x = `20 E3.25`)) + geom_histogram(binwidth = 0.2)

? 問題

  • dfx and dftx有什么不同扎附?為什么要創(chuàng)建兩個?

  • 我們回到之前的barplot, 賦值給pb

> library("dplyr")
> groups = group_by(pData(x), sampleGroup) %>%
+   summarise(n = n(), color = unique(sampleColour))
> head(groups)
# A tibble: 6 x 3
  sampleGroup         n color  
  <chr>           <int> <chr>  
1 E3.25              36 #CAB2D6
2 E3.25 (FGF4-KO)    17 #FDBF6F
3 E3.5 (EPI)         11 #A6CEE3
4 E3.5 (FGF4-KO)      8 #FF7F00
5 E3.5 (PE)          11 #B2DF8A
6 E4.5 (EPI)          4 #1F78B4
> groupColor = setNames(groups$color, groups$sampleGroup)
> pb = ggplot(groups, aes(x = sampleGroup, y = n))
  • 我們創(chuàng)建了一個繪圖對象结耀,如果我們要去展現(xiàn)pb, 會得到這是一個空白的圖形留夜。因為我們沒有指定任何特定的j幾何對象。到目前為止图甜,我們在pb對象中所擁有的只是數(shù)據(jù)和aesthetics碍粥。
> class(pb)
[1] "gg"     "ggplot"
> pb
  • 現(xiàn)在我們可以一層一層的添加圖層。
> pb = pb + geom_bar(stat = "identity") ## 柱狀圖
> pb
> pb = pb + aes(fill = sampleGroup) ## 按group填充顏色
> pb
> pb = pb + theme(axis.text.x = element_text(angle = 90, hjust = 1)) # 設置x坐標標簽黑毅,旋轉90°
> pb
> pb = pb + scale_fill_manual(values = groupColor, name = "Groups") ## 指定填充顏色嚼摩,注意要與sampleGroup一致
Error in rlang::is_missing(values) : 找不到對象'groupColor'
> groupColor = setNames(groups$color, groups$sampleGroup)
> pb = pb + scale_fill_manual(values = groupColor, name = "Groups")
> pb
> groups
# A tibble: 8 x 3
  sampleGroup         n color  
  <chr>           <int> <chr>  
1 E3.25              36 #CAB2D6
2 E3.25 (FGF4-KO)    17 #FDBF6F
3 E3.5 (EPI)         11 #A6CEE3
4 E3.5 (FGF4-KO)      8 #FF7F00
5 E3.5 (PE)          11 #B2DF8A
6 E4.5 (EPI)          4 #1F78B4
7 E4.5 (FGF4-KO)     10 #E31A1C
8 E4.5 (PE)           4 #33A02C
> groupColor 
          E3.25 E3.25 (FGF4-KO)      E3.5 (EPI)  E3.5 (FGF4-KO)       E3.5 (PE)      E4.5 (EPI)  E4.5 (FGF4-KO)       E4.5 (PE) 
      "#CAB2D6"       "#FDBF6F"       "#A6CEE3"       "#FF7F00"       "#B2DF8A"       "#1F78B4"       "#E31A1C"       "#33A02C" 

  • 將柱狀圖轉換為極坐標圖
> pb.polar = pb + coord_polar() +
+   theme(axis.text.x = element_text(angle = 0, hjust = 1),
+         axis.text.y = element_blank(),
+         axis.ticks = element_blank()) +
+   xlab("") + ylab("")
> polar


請注意,我們可以通過簡單地將它們設置為新值來覆蓋以前設置的主題參數(shù) - 無需返回重新創(chuàng)建pb矿瘦,我們最初設置它們

3.6 一維數(shù)據(jù)的可視化

  • 生物數(shù)據(jù)分析的一個共同的任務是比較幾個樣本的單變量測量枕面。在本節(jié)中,我們將探索可視化和比較此類示例的一些可能性匪凡。作為示例膊畴,我們將使用四個基因Fgf4Gata4病游、GATA6Sox2的強度唇跨。
> selectedProbes = c( Fgf4 = "1420085_at", Gata4 = "1418863_at",
+                    Gata6 = "1425463_at",  Sox2 = "1416967_at")
  • 使用reshape2包中的melt函數(shù),提取四個基因在總的數(shù)據(jù)中對應的信息衬衬。
> library("reshape2")
> genes = melt(Biobase::exprs(x)[selectedProbes, ],
+              varnames = c("probe", "sample"))
> head(genes)
       probe  sample    value
1 1420085_at 1 E3.25 3.027715
2 1418863_at 1 E3.25 4.843137
3 1425463_at 1 E3.25 5.500618
4 1416967_at 1 E3.25 1.731217
5 1420085_at 2 E3.25 9.293016
6 1418863_at 2 E3.25 5.530016
  • 為了更好地衡量买猖,我們還添加了一個列,該列提供了基因符號和探針標識符滋尉。
> genes$gene =
  names(selectedProbes)[match(genes$probe, selectedProbes)]
> head(genes)
       probe  sample    value  gene
1 1420085_at 1 E3.25 3.027715  Fgf4
2 1418863_at 1 E3.25 4.843137 Gata4
3 1425463_at 1 E3.25 5.500618 Gata6
4 1416967_at 1 E3.25 1.731217  Sox2
5 1420085_at 2 E3.25 9.293016  Fgf4
6 1418863_at 2 E3.25 5.530016 Gata4
  • 3.6.1 Barplot
> ggplot(genes, aes( x = gene, y = value)) +
+   stat_summary(fun.y = mean, geom = "bar")
Figure 3.15
  • Figure 3.15中我們呈現(xiàn)了各個基因的均值來繪制條形圖玉控。然而采用均值來繪制會使我們丟失掉很多信息∈ㄏВ考慮到所需的空間量高诺,條形圖往往是一種可視化數(shù)據(jù)的糟糕方式碌识。
  • 有時候我們想要添加誤差線,實現(xiàn)如下:
> library("Hmisc")
> ggplot(genes, aes( x = gene, y = value, fill = gene)) +
+   stat_summary(fun.y = mean, geom = "bar") +
+   stat_summary(fun.data = mean_cl_normal, geom = "errorbar",
+                width = 0.25)
image.png
  • 這里我們使用了兩個統(tǒng)計函數(shù)meanmean_cl_normal以及兩個幾何對象barerrorbar虱而。mean_cl_normal函數(shù)來源于Hmisc 包——用來計算平均值的標準誤差(或者置信區(qū)間)筏餐。

3.6.2 Boxplots

> p = ggplot(genes, aes( x = gene, y = value, fill = gene))
> p + geom_boxplot()


3.6.3 Violin plots

> p + geom_violin()


3.6.4 Dot plots and beeswarm plots

> p + geom_dotplot(binaxis = "y", binwidth = 1/6,
+        stackdir = "center", stackratio = 0.75,
+        aes(color = gene))

> library("ggbeeswarm")
> p + geom_beeswarm(aes(color = gene))

3.6.5 Density plots

> ggplot(genes, aes( x = value, color = gene)) + geom_density()

3.6.6 ECDF plots

  • cumulative distribution function (CDF): 累積分布函數(shù)
    F(x)=P(X≤x)
  • empirical cumulative distribution function (ECDF): 經驗累積分布函數(shù)
> simdata = rnorm(70)
> tibble(index = seq(along = simdata),
+           sx = sort(simdata)) %>%
+ ggplot(aes(x = sx, y = index)) + geom_step()
> ggplot(genes, aes( x = value, color = gene)) + stat_ecdf()

3.6.7 The effect of transformations on densities

  • 很容易觀察直方圖或密度圖,并檢查它們是否有雙峰(或多模態(tài))的證據(jù)牡拇,以表明某些潛在的生物現(xiàn)象魁瞪。在此之前,重要的是要記住惠呼,密度的模式的數(shù)量取決于數(shù)據(jù)的比例變換导俘,通過鏈規(guī)則。例如剔蹋,讓我們查看來自Hiiragi數(shù)據(jù)集中的一個數(shù)組的數(shù)據(jù)
> ggplot(dfx, aes(x = `64 E4.5 (EPI)`)) + geom_histogram(bins = 100)
> ggplot(dfx, aes(x = 2 ^ `64 E4.5 (EPI)`)) + 
+   geom_histogram(binwidth = 20) + xlim(0, 1500)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末旅薄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滩租,更是在濱河造成了極大的恐慌赋秀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件律想,死亡現(xiàn)場離奇詭異猎莲,居然都是意外死亡,警方通過查閱死者的電腦和手機技即,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門著洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人而叼,你說我怎么就攤上這事身笤。” “怎么了葵陵?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵液荸,是天一觀的道長。 經常有香客問我脱篙,道長娇钱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任绊困,我火速辦了婚禮文搂,結果婚禮上,老公的妹妹穿的比我還像新娘秤朗。我一直安慰自己煤蹭,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著硝皂,像睡著了一般常挚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稽物,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天待侵,我揣著相機與錄音,去河邊找鬼姨裸。 笑死,一個胖子當著我的面吹牛怨酝,可吹牛的內容都是我干的傀缩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼农猬,長吁一口氣:“原來是場噩夢啊……” “哼赡艰!你這毒婦竟也來了?” 一聲冷哼從身側響起斤葱,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤慷垮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后揍堕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體料身,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年衩茸,在試婚紗的時候發(fā)現(xiàn)自己被綠了芹血。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡楞慈,死狀恐怖幔烛,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情囊蓝,我是刑警寧澤饿悬,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站聚霜,受9級特大地震影響狡恬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜俯萎,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一傲宜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夫啊,春花似錦函卒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虱咧。三九已至,卻和暖如春锚国,著一層夾襖步出監(jiān)牢的瞬間腕巡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工血筑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绘沉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓豺总,卻偏偏與公主長得像车伞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子喻喳,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容