您好,登錄后才能下訂單哦!
R語言ggplot2畫圖比較兩組連續型數據的幾種方案分別是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
連續型數據的的分組比較在科研生活中非常常見,比如:實驗組和對照組基因表達量的比較、臨床病人存活組和死亡組某項檢查指標的比較 等等。檢驗兩組連續型數據之間是否存在差異通常會使用T檢驗。對數據進行展示通常可以使用柱形圖,箱線圖,小提琴圖,直方圖,散點圖等幾種方式。今天的推文分別介紹一下以上5種圖形的ggplot2實現代碼。
分別是ggplot2
用來畫圖RColorBrewer
用來生成顏色dplyr
用來整理數據
ggplot2
和dplyr
如果是第一次使用需要安裝,安裝用到的命令是
install.packages("ggplot2")
install.packages("dplyr")
set.seed(1234)
crp1<-round(abs(rnorm(200, mean = 150, sd = 48)))
status1<-rep("Death", 200)
data1<-data.frame(crp1, status1)
crp2<-round(abs(rnorm(200, mean = 70, sd = 20)))
status2<-rep("Survivor", 200)
data2<-data.frame(crp2, status2)
colnames(data1)[1]<-"CRP"
colnames(data1)[2]<-"Status"
colnames(data2)[1]<-"CRP"
colnames(data2)[2]<-"Status"
data<-rbind(data1, data2)
View(data)
得到的數據集data是包含兩個變量,分別是CRP和Status。模擬的是臨床病人存活者和死亡者C反應蛋白(CRP)的差異。
接下來我們就來看看分別可以用哪些圖來展示這樣的數據
首先是對數據集進行轉換
library(dplyr)
df1<-summarise(group_by(data,Status), mean(CRP))
df2<-summarise(group_by(data,Status), sd(CRP))
df3<-left_join(df1, df2)
View(df3)
畫圖
library(ggplot2)
ggplot(df3, aes(Status,`mean(CRP)`))+
geom_col(aes(fill=Status),width=0.7,color="black")+
geom_errorbar(aes(ymin = `mean(CRP)`,
ymax = `mean(CRP)`+`sd(CRP)`),
width = 0.2)+
scale_fill_brewer(palette = "Dark2")+
theme(legend.position = "none")
ggplot(data, aes(Status, CRP))+
geom_boxplot(aes(fill=Status), width=0.6)+
scale_fill_brewer(palette = "Dark2")+
theme(legend.position = "none")
箱線圖比較常用,這里我給他們上了個色。分組信息在x軸已經體現,故去除圖例,避免累贅。出圖如下:
ggplot(data, aes(Status, CRP))+
geom_violin(aes(fill = Status))+
geom_boxplot(width=0.1)+
scale_fill_brewer(palette = "Dark2")+
theme(legend.position = "none")
這個圖實際上是小提琴圖和箱線圖的組合。小提琴圖的優點在于能夠直觀地看到數據的分布情況。
ggplot(data)+
geom_histogram(aes(CRP, fill=Status), position = "identity", alpha=0.6, color="white")+
scale_fill_brewer(palette = "Dark2")
直方圖同樣也能看出數據的分布。但這里因為圖形有重疊,我們需要用alpha參數對透明度進行設置。
此外,在直方圖的基礎上,我們也可以添加核密度曲線:
ggplot(data, aes(CRP))+
geom_histogram(aes(y = ..density.., fill = Status), position = "identity", alpha = 0.6, color = "white")+
stat_density(geom = 'line', size=1, position = 'identity', aes(color = Status))+
scale_fill_brewer(palette = "Dark2")+
scale_color_brewer(palette = "Dark2")
ggplot(data, aes(Status, CRP))+
geom_jitter(shape=21, size=4, color="black", aes( fill = Status), width=0.2)+
scale_fill_brewer(palette = "Dark2") +
theme(legend.position = "none")
散點圖用到的主要圖形對象包括geom_jitter和geom_dotplot. geom_jitter產生的點可在一定范圍內隨機波動,所以也叫抖動點圖;而geom_dotplot產生的點可以按照作者想要的方式(比如,居中)進行排列。
ggplot(data, aes(Status, CRP)) +
geom_dotplot(binaxis = "y", stackdir = "center",aes(fill = Status), binwidth = 6) +
scale_fill_brewer(palette = "Dark2") +
theme(legend.position = "none")
除了以上幾種圖形之外,還可以對多種圖形對象進行組合,比如點圖+柱狀圖,點圖+箱線圖。這樣可使數據的展現更為飽滿。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。