<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          R語言學習 - 散點圖繪制

          共 1356字,需瀏覽 3分鐘

           ·

          2020-05-31 23:22

          散點圖

          散點圖在生物信息分析中是應(yīng)用比較廣的一個圖,常見的差異基因火山圖、功能富集分析泡泡圖、相關(guān)性分析散點圖、抖動圖PCA樣品分類圖(后續(xù)推出)等。凡是想展示分布狀態(tài)的都可以用散點圖。

          橫縱軸都為數(shù)字的散點圖解析

          繪制散點圖的輸入一般都是規(guī)規(guī)矩矩的矩陣,可以讓不同的列分別代表X軸、Y軸、點的大小、顏色、形狀、名稱等。

          輸入數(shù)據(jù)格式 (使用火山圖的輸入數(shù)據(jù)為例)

          火山圖需要的數(shù)據(jù)格式如下

          • id: 不是必須的,但一般的軟件輸出結(jié)果中都會包含,表示基因名字。

          • log2FoldChange: 差異倍數(shù)的對數(shù),一般的差異分析輸出結(jié)果中也會給出對數(shù)處理的值, 因此程序沒有提供這一步的計算操作。

          • padj: 多重假設(shè)檢驗矯正過的差異顯著性P值;一般的差異分析輸出結(jié)果為原始值,程序提供一個參數(shù)對其求取負對數(shù)。

          • significant: 可選列,標記哪些基因是上調(diào)、下調(diào)、無差異;若無此列或未在參數(shù)中指定此列,默認程序會根據(jù)padj列和log2FoldChange列根據(jù)給定的閾值自動計算差異基因,并作出不同顏色的標記。

          • label?:可選列,一般用于在圖中標記出感興趣的基因的名字。非-行的字符串都會標記在圖上。

          volcano = "id;log2FoldChange;padj;significant;label
          E00007;4.28238;0;EHBIO_UP;A
          E00008;-1.1036;0.476466843393901;Unchanged;-
          E00009;-0.274368;1;Unchanged;-
          E00010;4.62347;7.37606076333335e-103;EHBIO_UP;-
          E00012;0.973987;0.482982440163204;Unchanged;-
          E00017;-1.30205;0.000555693857439792;Baodian_UP;B
          E00024;0.617636;2.78047837287061e-13;Unchanged;-
          E00033;1.48669;2.56000581595275e-60;EHBIO_UP;-
          E00034;-0.783716;0.00341521725291801;Unchanged;-
          E00036;2.01592;6.03136656016401e-06;EHBIO_UP;C
          E00040;-1.89657;4.73663890849056e-21;Baodian_UP;-
          E00041;-0.268168;0.563429434558031;Unchanged;-
          E00042;0.0861048;0.367700939634328;Unchanged;-
          E00043;-1.19328;1.42673872027352e-153;Baodian_UP;-
          E00044;-0.887981;2.43067804654905e-26;Unchanged;-
          E00047;-0.610941;5.51696648645932e-57;Unchanged;-"


          # 數(shù)據(jù)的讀取之前的R語言統(tǒng)計和繪圖系列都已解釋過,不再贅述
          # 文末也有鏈接可直達之前的文章,新學者建議從頭開始
          volcanoData <- read.table(text=volcano, sep=";", header=T, quote="", check.names=F)
          head(volcanoData)
           ? ? ?id log2FoldChange ? ? ? ? ?padj significant label
          1 E00007 ? ? ? 4.282380 ?0.000000e+00 ? ?EHBIO_UP ? ? A
          2 E00008 ? ? ?-1.103600 ?4.764668e-01 ? Unchanged ? ? -
          3 E00009 ? ? ?-0.274368 ?1.000000e+00 ? Unchanged ? ? -
          4 E00010 ? ? ? 4.623470 7.376061e-103 ? ?EHBIO_UP ? ? -
          5 E00012 ? ? ? 0.973987 ?4.829824e-01 ? Unchanged ? ? -
          6 E00017 ? ? ?-1.302050 ?5.556939e-04 ?Baodian_UP ? ? B

          繪制散點圖,只需要指定X軸和Y軸,再加上geom_point即可。

          library(ggplot2)
          p <- ggplot(volcanoData, aes(x=log2FoldChange, y=padj))
          p <- p + geom_point()
          # 前面是給p不斷添加圖層的過程
          # 單輸入一個p是真正作圖
          # 前面有人說,上面都輸完了,怎么沒出圖
          # 就因為差了一個p
          p

          說好的火山圖的例子,但怎么也看不出噴發(fā)的態(tài)勢。

          ad3cf923fdd8043c07a494c4795dd88c.webp

          對數(shù)據(jù)坐下預處理,差異大的基因padj小,先對其求取負對數(shù),所謂負負得正,差異大的基因就會處于圖的上方了。

          # 從示例數(shù)據(jù)中看到,最小的padj值為0,求取負對數(shù)為正無窮。
          # 實際上padj值小到一個點對我們來講就是個數(shù)
          # 所以可以給所有小于1e-6的padj都讓其等于1e-6,再小也沒意義
          #
          volcanoData[volcanoData$padj<1e-6, "padj"] <- 1e-6
          volcanoData$padj <- (-1)* log10(volcanoData$padj)

          數(shù)據(jù)中基因的上調(diào)倍數(shù)遠高于下調(diào)倍數(shù),使得出來的圖是偏的,這次畫圖時調(diào)整下X軸的區(qū)間使圖對稱。

          p <- ggplot(volcanoData, ?aes(x=log2FoldChange, ?y=padj)) +
          ? ? geom_point() +
          ? ? xlim(-4.7, 4.7)
          p

          eebe100faad5fa2bb9cb883c69843681.webp

          有點意思了,數(shù)據(jù)太少不明顯,下一步加上顏色看看。

          p <- ggplot(volcanoData, ?aes(x=log2FoldChange, ?y=padj)) +
          ? ? geom_point(color=significant) +
          ? ? xlim(-4.7, 4.7)
          p

          利用現(xiàn)有的數(shù)據(jù),基本上就是這個樣子了。雖然還不太像,原理都已經(jīng)都點到了。

          703b7448ce85f9e910477a33f931ecaa.webp

          Volcano plot | 別再問我這為什么是火山圖

          盜取火山圖繪制一文中的圖來顯示個真正的火山圖吧。這樣一步步繪制很麻煩,去看一步法吧

          990481f9d7de8e682a40db322768f718.webp

          橫縱軸都為字符串的散點圖展示

          輸入數(shù)據(jù)格式如下

          這個數(shù)據(jù)是以前講到的FASTQC結(jié)果總結(jié)中的直觀的查看所有樣品測序堿基質(zhì)量和GC含量的散點圖的示例數(shù)據(jù)。

          fastqc<-"ID;GC_quality;Base_quality
          ehbio_1_1;PASS;PASS
          ehbio_1_2;PASS;PASS
          ehbio_2_1;WARN;PASS
          ehbio_2_2;WARN;PASS
          Other_1_1;FAIL;FAIL
          Other_1_2;FAIL;FAIL"


          fastqc_data <- read.table(text=fastqc, sep=";", header=T)
          # 就不查看了
          p <- ggplot(fastqc_data, aes(x=GC_quality, y=Base_quality)) + geom_point()
          p

          677faf8e945161ecc04cc66235912bce.webp

          六個點少了只剩下了3個,重疊在一起了,而且也不知道哪個點代表什么樣品。這時需要把點抖動下,用到一個包ggbeeswarm,抖動圖的神器。

          library(ggbeeswarm)
          p <- ggplot(fastqc_data, aes(x=GC_quality, y=Base_quality)) + geom_quasirandom()
          # 使用geom_text增加點的標記
          # label表示標記哪一列的數(shù)值
          # position_quasirandom獲取點偏移后的位置
          # xjust調(diào)整對齊方式; hjust是水平的對齊方式,0為左,1為右,0.5居中,0-1之間可以取任意值。vjust是垂直對齊方式,0底對齊,1為頂對齊,0.5居中,0-1之間可以取任意值。
          # check_overlap檢查名字在圖上是否重疊
          p <- p + geom_text(aes(label=ID), position=position_quasirandom(),hjust=0, check_overlap=T)
          p

          cf26c1772a258285e66ef755d528d0d9.webp

          一網(wǎng)打進散點圖繪制

          假如有一個輸入數(shù)據(jù)如下所示(存儲于文件scatterplot.xls中)

          Samp ? ?Gene1 ? ?Gene2 ? ?Color ? ?Size ? ?GC_quality ? ?Base_qualitya ? ?1 ? ?1 ? ?grp1 ? ?10 ? ?PASS ? ?PASSb ? ?2 ? ?2 ? ?grp1 ? ?10 ? ?PASS ? ?PASSc ? ?1 ? ?3 ? ?grp1 ? ?10 ? ?WARN ? ?PASSd ? ?3 ? ?1 ? ?grp2 ? ?15 ? ?WARN ? ?WARNe ? ?2 ? ?2 ? ?grp2 ? ?15 ? ?PASS ? ?WARNf ? ?3 ? ?3 ? ?grp3 ? ?5 ? ?PASS ? ?PASSg ? ?2 ? ?1 ? ?grp3 ? ?5 ? ?WARN ? ?PASS

          想繪制樣品在這兩個Gene為軸的空間的分布,并標記樣品的屬性,只需要運行如下命令

          # -f: 指定輸入文件,列數(shù)不限,順序不限; 第一行為列名字,第一列無特殊要求,必選
          # -X: 指定哪一列為X軸信息,必選
          # -Y: 指定哪一列為Y軸信息,必選
          # -c: 指定用哪一列標記顏色,可選
          # -s: 指定哪一列標記大小,一般為數(shù)字列,可選
          # -S: 指定哪一列標記形狀,可選
          # -L: 指定哪一列用來作為文本標記
          # -w, -u: 指定圖的長寬
          sp_scatterplot2.sh -f scatterplot.xls -X Gene1 -Y Gene2 -c Color -s Size -S GC_quality -L Samp -w 10 -u 10

          6c630cdece6dba9ecf7298ef253c1d5d.webp

          如果橫縱軸為字符串,且有重復, 則需指定參數(shù)-J TRUE以錯開重疊的點,具體如下

          # -O: 指定X軸變量的順序, 默認是字母順序
          # 其它列或其它屬性的順序也可以用相應(yīng)的方式指示,具體看程序的幫助提示
          # -c Gene1: 用特定基因的表達對點著色,單細胞分析圖中常用
          # -J TRUE: 見上
          # -Z FALSE:默認使用geom_text_repel添加點的標記,及其智能,不會出現(xiàn)標簽過多覆蓋的情況
          # 但對jitterplot,會有些沖突,所以在`-J TRUE`且出來的圖中點的標簽不符合預期時,設(shè)定
          # 次參數(shù)為FALSE,使用geom_text標記點。

          sp_scatterplot2.sh -f scatterplot.xls -X GC_quality -Y Base_quality -O "'WARN', 'PASS'" -c Gene1 -w 10 -u 10 -J TRUE -L Samp -Z FALSE

          9e3814b889750ac3fea84e9585870a41.webp只有想不到,沒有做不到,sp_scatterplot2.sh還可以完成更多你想做的散點圖,而且只需調(diào)參數(shù),無需改代碼,簡單可重用。

           轉(zhuǎn)發(fā)朋友圈截圖給客服(shengxinbaodian)獲取,不用再重復了

          Reference

          • http://blog.genesino.com/2017/07/scatterPlot

          你可能還想看:

          高顏值免費在線繪圖(點擊圖片直達網(wǎng)站手冊)

          往期精品(點擊圖片直達文字對應(yīng)教程)

          829f7e71757bd0b633fbf164c4a89430.webp

          8e53163ab8d6d590bcfdfba9387cfa5d.webp

          f3409c638c59387c13c10a212fdc1d16.webp

          12ea7991d18cad859930f0db0316c362.webp

          a26b31827fddceb6ea9766374ffbf00f.webp

          d09a92f5314f200cbc823fe95aff40a5.webp

          9dfed70d9c5531bea26c0b01f467a324.webp

          bee54286a866df13ef9f30d469c7e002.webp

          e402f05b138979b74142982c58c49adf.webp

          b92d1c9d7667e372ca15a1ddd3b53fba.webp

          8229dd54be41de10ec038a8829e0ddb5.webp

          825072b4f8f800c75433b004034c8e2d.webp

          ef3e2dd58e1d1bd03cb838f908ead683.webp

          8e60ffec46f01b4aed98b877ee383499.webp

          cfdfc6b94c710fe9c9e923a3cd3c9105.webp

          fdc5aaca266d35ef407ae4256b7a6479.webp

          7352dd9fef084bd215784f300e70ae87.webp

          185cb1e9dcc367f7f9e28cbfa1148fc5.webp

          e88691864acd1999b4c03590e890cbd0.webp

          b7b997bc92e986ad0b3f528d3ed2c35b.webp

          4e0d575fabbd76a56457db9d010543c3.webp

          714e75de8aceb806ed3fc74694710285.webp

          32a4f4b4fa330fd7bbeb95164a8809ae.webp

          f21395ab70d42d3057a5b34a86e15e88.webp

          8a0af0d63589e5e62b68c26e5a247e57.webp

          cbf8982cae0b200ab1688fd83190cebe.webp

          51b84f97efa72ac29ac1783706f0b3f0.webp

          636768e2cece0f07642f43562f79bb25.webp


          后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

          00e95aaa92f4fcfdd4d7727fc2504e5d.webp


          瀏覽 182
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国一级网站 | 青青网站黄色 | 亚洲AV电影在线 | 亚洲AV无码精品 | 日比视频在线观看 |