散點圖可以直觀反映數(shù)據(jù)的分布,箱線圖可以展示均值等關鍵統(tǒng)計量,二者結合能夠清晰呈現(xiàn)數(shù)據(jù)蘊含的信息。
本篇筆記主要內容:介紹R語言中繪制箱線圖和散點圖的方法,以及二者結合展示教程,添加差異比較顯著性分析,繪制如上結果圖。
加載R包與數(shù)據(jù)
library(ggpubr)
library(patchwork)
library(ggsci)
library(tidyverse)
# 使用R語言自帶的iris數(shù)據(jù)集,并隨機分成兩組
data <- iris
data$Group <- NA
data$Group[sample(1:nrow(data),size = (nrow(data)/2))] <- "A"
data$Group[is.na(data$Group)] <- "B"
在實際數(shù)據(jù)可視化過程中,輸入數(shù)據(jù)格式也和上面類似,至少有兩列,其中一列是分類,另一列是數(shù)值。
繪制箱線圖
ggplot(data,aes(x = Species,y = Sepal.Width)) +
geom_boxplot(aes(fill = Species),alpha = 0.7)
這里將Species
設置為x軸,Sepal.Width
設置為y軸,箱子內部填充顏色與Species
映射。
這段代碼的作用是創(chuàng)建一個箱形圖,顯示不同物種(Species)的萼片寬度(Sepal.Width)分布,且不同物種的箱形用不同顏色表示,并且這些顏色半透明。
這種類型的圖表通常用于展示和比較不同類別或組的數(shù)據(jù)分布情況,特別是中位數(shù)、四分位數(shù)等統(tǒng)計信息。
繪制散點圖
ggplot(data,aes(x = Species,y = Sepal.Width)) +
geom_jitter(aes(color = Species))
利用ggplot2包創(chuàng)建散點圖,并通過geom_jitter
功能添加一些隨機噪聲來分散點,以便更清晰地展示數(shù)據(jù)。
繪制箱線圖+散點圖
p <- ggplot(data,aes(x = Species,y = Sepal.Width)) +
geom_boxplot(aes(fill = Species),alpha = 0.7)+
geom_jitter(aes(color = Species))+
scale_fill_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
scale_color_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
theme_bw()+
theme(panel.grid = element_blank())
p
單因素多水平比較
對于兩組以上的獨立樣品,如果數(shù)據(jù)同時滿足正態(tài)性和方差齊性,可以采用方差分析(ANOVA)或者Kruskal檢驗,如果不滿足可采用Kruskal檢驗。
p <- p + stat_compare_means(
method = "kruskal.test",
label = "p.format",
label.x = 2,
label.y = 4,
show.legend = F
)
p
可以看到上圖中自動標注的顯著性P值,通過修改label參數(shù)可以轉換展示方式,默認顯示檢驗方法和p值。
p.format只顯示p值不顯示檢驗方法,p.signif顯示顯著性水平符號,ns
: p > 0.05、*
: p <= 0.05、**
: p <= 0.01、***
: p <= 0.001、****
: p <= 0.0001。
- method:選擇統(tǒng)計學檢驗的方法
單因素兩兩比較
如果想看兩兩之間的差異顯著性,例如“setosa”和“versicolor”,可以通過wilcox.test方法進行檢驗。
# 首先設置比較的列表
compare_list <- list(
c("setosa","versicolor"),
c("versicolor","virginica")
p <- ggplot(data,aes(x = Species,y = Sepal.Width)) +
geom_boxplot(aes(fill = Species),alpha = 0.7)+
geom_jitter(aes(color = Species))+
scale_fill_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
scale_color_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
theme_bw()+
theme(panel.grid = element_blank())+
stat_compare_means(
comparisons = compare_list,
method = "wilcox.test",
label = "p.signif")
)
代碼中stat_compare_means函數(shù)提供統(tǒng)計學檢驗,調節(jié)參數(shù)可以轉換方法和展示方式。
雙因素組內比較
如果引入分組信息作為另外一個因素,那么可以對每個水平內兩組進行比較。
p <- ggplot(data,aes(x = Species,y = Sepal.Length,color = Group))+
geom_boxplot(aes(fill=Group),alpha=0.5)
p
箱線 + 散點
p <- ggplot(data,aes(x = Species,y = Sepal.Length,color = Group))+
geom_boxplot(aes(fill=Group),alpha=0.5)+
geom_jitter(position = position_jitterdodge(jitter.width = 0.5,
jitter.height = 0.5,
dodge.width = 0.2))+
scale_fill_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
scale_color_manual(values = c("#f79f1f","#a3cb38","#1289a7"))+
theme_bw()
p
position_jitterdodge函數(shù)可以調整散點圖的抖動范圍,scale_fill_manual用于調整填充顏色,theme_bw用于設置主題,這段代碼僅作圖。
統(tǒng)計學檢驗
p <- p + stat_compare_means(
aes(group = Group),
label = "p.format",
show.legend = F,
label.y = 8.5
)
p
這張圖x軸是不同分類,每個分類下有A和B兩組,y軸表示具體的值,每個分類上有P值標注。
在實際的分析可視化過程中,還要考慮實驗設計、數(shù)據(jù)分布狀態(tài)等因素,合理選擇檢驗方法,并根據(jù)目的和需求修改相應參數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-841706.html
本文由mdnice多平臺發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-841706.html
到了這里,關于R語言中使用ggplot2繪制散點圖箱線圖,附加顯著性檢驗的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!