ggpubr作圖
導讀
以前總是借助PS來為新鮮出爐的R圖添加統(tǒng)計顯著標識曹仗,但是現(xiàn)在可以不用了老速,因為
ggbubr
可以一站式解決贞绵,而且畫的圖堪比SCI級別者祖。話不多說孵构,擼起袖子搞起來
工作流程
包的下載屁商,直接從CRAN鏡像下載即可
install.packages("ggpubr")
library(ggpubr) #加載
數(shù)據(jù)準備及處理,如下圖所示
- 這里準備了我自己截取的一小部分數(shù)據(jù)做例子颈墅,首先要有分組信息蜡镶,個體信息不重要。但是這樣的數(shù)據(jù)不適合ggplot2環(huán)境下作圖恤筛,因為有兩個變量需要作圖官还,這里需要對數(shù)據(jù)進行轉(zhuǎn)換一下,采用的是
reshape2
包的melt
函數(shù)
數(shù)據(jù)示例
setwd("C:\\Users\\Administrator\\Desktop")#設置工作路徑
test_df <- read.table("clipboard",header = T,check.names = F)#讀取數(shù)據(jù)
#test_df[,2:3] <- log1p(test_df[,2:3])
#test_df[,2:3] <- scale(test_df[,2:3], center = TRUE, scale = TRUE)
library(reshape2)
work_df <- melt(test_df, id.vars = "Treament")
- 數(shù)據(jù)經(jīng)過轉(zhuǎn)換后成為了一個長矩陣毒坛,這樣就可以通過ggplot2分析和作圖了望伦,這里的分組信息是Treatment,變量信息在variable中煎殷,變量對應的數(shù)值信息在value列中屯伞。
轉(zhuǎn)換后的數(shù)據(jù)
數(shù)據(jù)分析, 組間差異比較
library(ggpubr)
compare_means(value ~ Treament, data = work_df, group.by = "variable")
# A tibble: 2 x 9
# variable .y. group1 group2 p p.adj p.format p.signif method
# <fct> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#1 Hippurate value High Low 0.321 0.45 0.32 ns Wilcoxon
#2 Urate value High Low 0.224 0.45 0.22 ns Wilcoxon
采用的是默認的Wilcoxon組間差異檢驗豪直,可以看到
Hippurate
和Urate
在兩個分組之間差異均不顯著
作圖
盡管不顯著劣摇,但是還是想看下數(shù)據(jù)的分布是如何的,那么這里將展示
boxplot
弓乙、barplot
和line
作圖結(jié)果末融,以及如何添加顯著性標識。
1 | boxplot
p <- ggboxplot(work_df, x = "variable", y = "value",
color = "Treament", palette = "jco",
add = "jitter") # palette可以按照期刊選擇相應的配色暇韧,如"npg"等
p + stat_compare_means(aes(group = Treament), label = "p.signif")
# label = "p.signif"標識用星號或者''ns''等字符來表示顯著性結(jié)果
ggsave("boxplot.tiff",width = 8,height = 8)
boxplot
2 | barplot
p1 <- ggbarplot(work_df, x = "variable", y = "value", add = "mean_se",
color = "Treament", palette = "jco",
position = position_dodge(0.8))
p1 <- p1 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180)
# label = "p.format"標識用P值來標識顯著性結(jié)果勾习,如下圖所示
ggsave("barplot.tiff",width = 8,height = 8)
barplot
3 | 數(shù)據(jù)點一一對應的boxplot圖
可惜可能是我數(shù)據(jù)的問題,沒有做出來那種效果
p2 <- ggpaired(work_df, x = "Treament", y = "value",
color = "Treament", palette = "jco", facet.by = "variable" ,
line.color = "gray", line.size = 0.4, short.panel.labs = FALSE)
p2 <- p2 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 200)
我做的圖
引用參考出處的圖懈玻,本來應該這樣的
4 | line圖
p3 <- ggline(work_df, x = "variable", y = "value", add = "mean_se",
color = "Treament", palette = "jco",
position = position_dodge(0.8))
p3 <- p3 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180)
line圖语卤,但是適合那種不同水平的比較,或者時間序列
結(jié)語
怎么樣酪刀,是不是很簡單也很好看,當然我展示的只是基本圖形钮孵,想要讓你的圖像更加色彩斑斕骂倘,可以有很多參數(shù)可以控制和調(diào)節(jié)。
參考
[1] https://www.r-bloggers.com/add-p-values-and-significance-levels-to-ggplots/