九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Boxplot | 用R畫一個漂亮的boxplot
userphoto

2019.09.23

關注
組學派 紀劍

Boxplot我想應該是做科研的最常用的可視化方式之一吧(具體自行百度),尤其是在做組學研究,常常要比較兩組或多組間的某一個因素(代謝物、基因、蛋白質等)的強度,而且有時間還需要對其做顯著性分析。

其實,可以做boxplot的軟件非常多,OriginGraphPad,excel等等,性能和效果各有多長。但是在現在常見做boxplot的方法中,R是非常好的策略,沒有之一。其優(yōu)勢在于,可以個性化設置,可以批量出圖,僅僅這兩點已經是大部分做組學且對圖表有高癖好的同學們愛不釋手的了。

先讓我們看看常見的boxplot有哪些風格呢?在必應的國際版images檢索“boxplot”得到的結果是這樣的:

這一眼看到,還真的沒有哪幾個是看的上眼的,尤其是想用來發(fā)高水平文章的。那我們看看高水平文章的boxplot是什么樣子的,姑且就先看看前幾天代謝組圈子里吵得比較熱的一篇Nature communication的文章(https://doi.org/10.1038/s41467-019-09550-x)中的boxplot做的效果,請看下圖:

如論是配色、線條粗細、字體大小、還有表現風格都非常的小清醒。那么今天我們就來好好用R來學學(模仿)這個boxplot,看看是否能達到原圖的效果,因為沒有原始數據,我們姑且用ToothGrowthdata來演示(R內置,無需下載)。

---------------------------------------------------------------

首先,我們可以看到這個圖應該是基于ggplot2完成的(猜測的),我們可以借用ggplot2開發(fā)的作圖包ggpubr,和配套ggpubrmagrittr包。我們發(fā)現圖中有顯著性分析,推測可能會用到ggsignif包,接下來我們就這4個包開展boxplot圖的繪制。

安裝包(pacman請自行安裝)

pacman::p_load(ggplot2, ggpubr, magrittr, ggsignif)

安裝好這4個作圖的包之后,開始觀察數據:

View(ToothGrowth)

將數據中第三列屬性設置成factor

ToothGrowth$dose <- as.factor(ToothGrowth$dose)

如果我們查看dose組的factors有哪些,可以看到如下:

下面我們就要根據數據來出圖:

01
第一步

ggboxplot(ToothGrowth, #數據對象

          x = 'dose', # 選擇x軸用那一列數據

          y = 'len', #選擇y軸用什么數據

          fill = 'dose', #顏色根據哪一列決定

          bxp.errorbar = T, #是否添加error bar

          bxp.errorbar.width = 0.2, #error bar的長度

          palette = 'npg', #顏色風格

          add = 'point' # 是否添加boxplot上面的點點

          )

我們會得到下面的圖:

似乎基本形成已經形成了,下面我們就需要美化這張boxplot

02
第二步

先把默認的x軸和y軸的標題改好:

ggboxplot(ToothGrowth, #數據對象

          x = 'dose', # 選擇x軸用那一列數據

          y = 'len', #選擇y軸用什么數據

          fill = 'dose', #顏色根據哪一列決定

          bxp.errorbar = T, #是否添加error bar

          bxp.errorbar.width = 0.2, #error bar的長度

          palette = 'npg', #顏色風格

          add = 'point' # 是否添加boxplot上面的點點

          ) +

labs(title = 'Effect of Vitamin C on Tooth Growth', # 添加主標題

         subtitle = 'Plot of length by dose', # 添加次標記

         caption = 'Data source: ToothGrowth', #添加腳注

         x = 'Dose (mg)', # x軸的名字

         y = 'Teeth length' # y軸的名字

         )

接著我們就得到下面的圖:

03
第三步

我們需要添加顯著性分析,假設我們dose=12的組需要跟dose=0.5的組進行比較:

ggboxplot(ToothGrowth, #數據對象

          x = 'dose', # 選擇x軸用那一列數據

          y = 'len', #選擇y軸用什么數據

          fill = 'dose', #顏色根據哪一列決定

          bxp.errorbar = T, #是否添加error bar

          bxp.errorbar.width = 0.2, #error bar的長度

          palette = 'npg', #顏色風格

          add = 'point' # 是否添加boxplot上面的點點

          ) +

labs(title = 'Effect of Vitamin C on Tooth Growth', # 添加主標題

         subtitle = 'Plot of length by dose', # 添加次標記

         caption = 'Data source: ToothGrowth', #添加腳注

         x = 'Dose (mg)', # x軸的名字

         y = 'Teeth length' # y軸的名字

         ) +

  geom_signif(comparisons = list(c('0.5', '1'), c('1','2'), c('0.5','2')), # 設置要對比的組

  y_position = c(34,36,38), #設置3個顯著性標記的高度

  tip_length = c(0), #設置顯著性那條橫線兩頭向下的長度

  map_signif_level = T, #設置是否標記顯著性的*號,還是直接標記數值

  test = t.test #設置顯著性計算方式

  )

04
第四步

最后就是設置線寬度和字體大小,及其他的主題theme()參數:

ggboxplot(ToothGrowth, #數據對象

          x = 'dose', # 選擇x軸用那一列數據

          y = 'len', #選擇y軸用什么數據

          fill = 'dose', #顏色根據哪一列決定

          bxp.errorbar = T, #是否添加error bar

          bxp.errorbar.width = 0.2, #error bar的長度

          palette = 'npg', #顏色風格

          add = 'point' # 是否添加boxplot上面的點點

          ) +

labs(title = 'Effect of Vitamin C on Tooth Growth', # 添加主標題

         subtitle = 'Plot of length by dose', # 添加次標記

         caption = 'Data source: ToothGrowth', #添加腳注

         x = 'Dose (mg)', # x軸的名字

         y = 'Teeth length' # y軸的名字

         ) +

  geom_signif(comparisons = list(c('0.5', '1'), c('1','2'), c('0.5','2')), # 設置要對比的組

  y_position = c(34,36,38), #設置3個顯著性標記的高度

  tip_length = c(0), #設置顯著性那條橫線兩頭向下的長度

  map_signif_level = T, #設置是否標記顯著性的*號,還是直接標記數值

  test = t.test #設置顯著性計算方式

  ) +

theme(

    plot.title    = element_text(color = 'black', size   = 16, hjust = 0.5),

    plot.subtitle = element_text(color = 'black', size   = 16,hjust = 0.5),

    plot.caption  = element_text(color = 'black', size   = 16,face = 'italic', hjust = 1),

    axis.text.x   = element_text(color = 'black', size = 16, angle = 0),

    axis.text.y   = element_text(color = 'black', size = 16, angle = 0),

    axis.title.x  = element_text(color = 'black', size = 16, angle = 0),

    axis.title.y  = element_text(color = 'black', size = 16, angle = 90),

    legend.title  = element_text(color = 'black', size  = 16),

    legend.text   = element_text(color = 'black', size   = 16),

    axis.line.y = element_line(color = 'black', linetype = 'solid'), # y軸線特征

    axis.line.x = element_line (color = 'black',linetype = 'solid'), # x軸線特征

     panel.border = element_rect(linetype = 'solid', size = 1.2,fill = NA) # 圖四周框起來

       )

看起來效果已經達到。

That's easy!

如需聯系EasyCharts團隊

請加微信:EasyCharts

【書籍推薦】《R語言數據可視化之美》
【書籍推薦】《Excel 數據之美》
【手冊獲取】  國內首款-數據可視化參考手冊
【網易云課堂】  Excel 商業(yè)圖表修煉秘笈之基礎篇
【文章匯總】 EasyCharts文章匯總
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ggplot2繪圖學習 主標題、軸標簽和圖例標題
r語言ggplot2誤差棒圖快速指南
ggplot2修改坐標軸詳細介紹
ggplot2|從0開始繪制箱線圖
繪圖專題 | 使用ggsignif添加顯著性標簽
嵌套條形圖的R語言實現
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服