ggpubr全能作圖包
在前文中我們介紹了一些有關(guān)與ggpubr的一些繪圖的功能,但是這個(gè)全功能的包還可以繪制非常多的圖形,今天我們來(lái)盤點(diǎn)ggpubr的圖形大全。
處理數(shù)據(jù)的時(shí)候主要接觸的是數(shù)據(jù)類型為,單變量因素連續(xù)型數(shù)據(jù);雙變量X離散,Y連續(xù);雙變量X,Y都連續(xù)這幾個(gè)了類型。
密度分布圖、直方圖
對(duì)于單變量因素連續(xù)型數(shù)據(jù)一般用密度分布圖、直方圖來(lái)表示,那ggpuber也提供了相關(guān)的繪圖功能。
密度分布圖
#加載相應(yīng)的R包
library(ggplot2)
library(ggpubr)
#構(gòu)建數(shù)據(jù)集,隨機(jī)構(gòu)建一個(gè)個(gè)數(shù)據(jù)框,包括ABCD四個(gè)組別
set.seed(1234)
mydata <- data.frame(
??group = rep(c("A", "B","C","D"), each=200),
??value = c(rnorm(200, mean = 2), rnorm(200, 6),rnorm(200,2,4),rnorm(200,6,4))
)
#用ggdensity繪制密度圖
ggdensity(mydata, x = "value", y="..density..", #也可選擇"..count.."
??????????fill = "lightblue",
??????????add = "mean", #或者"median",
??????????rug = TRUE #在圖形下方添加的密度標(biāo)度
)

分組繪制密度圖
#分組繪制密度直方圖
ggdensity(mydata, x = "value",
??????????facet.by="group", #按照分組進(jìn)行分面處理
??????????color = "group", fill="group", #填充按照組別映射
??????????palette = "lancet",#可以選擇"npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty"
??????????add = "mean",
??????????rug = TRUE,
??????????alpha=0.4, #調(diào)整透明度
??????????xlab=F,ylab = "Density",
??????????panel.labs=list(group = c("A", "B", "C", "D")), #修改每個(gè)panel的名字
??????????ggtheme=theme_bw() #可以是ggplot2中的主題類型

#還可以添加相應(yīng)的正態(tài)曲線來(lái)展示
p+stat_overlay_normal_density(color = "black", linetype = "dashed")

直方圖
#直方圖展示
gghistogram(mydata, x = "value", fill = "group",add = "mean", rug = TRUE, palette = c("#00AFBB", "#E7B800","pink","lightgreen"))

分面直方圖
gghistogram(mydata, x = "value",facet.by = "group"#分面操作
,add_density = TRUE,#添加密度曲線
fill = "group",add = "mean", rug = TRUE, palette = c("#00AFBB", "#E7B800","pink","lightgreen"))

箱線圖,小提琴圖,條形圖,點(diǎn)狀圖
離散型的數(shù)據(jù)(X為離散的)——箱線圖,小提琴圖,條形圖,點(diǎn)狀圖等。
在以前的文章中我們也給予了一寫小提琴的作圖方法,今天打包匯總各種圖的做法。
?簡(jiǎn)單的箱線圖繪制:
ggboxplot(mydata, x = "group", y = "value", width = 0.8)

ggboxplot(mydata, x = "group", y = "value", width = 0.8,
select = c("A","B"),#如果只想繪制某個(gè)組中的可以選擇
orientation = "horizontal",#箱線圖的方向
fill = "group",#填充映射到分組上
palette = c("#00AFBB", "#E7B800"),
add = "dotplot",#添加散點(diǎn)在圖中,還可以選擇"none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"
add.params=list(color = "lightblue",size=0.5)#對(duì)添加的對(duì)象進(jìn)行性狀,顏色,大小等定義)

小提琴
小提琴圖的繪制,可以查閱小云以前寫的“多渠道繪制小提琴圖,實(shí)現(xiàn)作圖自由”的文章。
?
條形圖
data("mtcars")
df2 <- mtcars
df2$cyl <- factor(df2$cyl)
df2$name <- rownames(df2)#添加一行name
head(df2[, c("name", "wt", "mpg", "cyl")])
?
ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white",
palette = "jco",#jco的配色
sort.val = "asc",#上升排序
sort.by.groups=TRUE,#按組排序
x.text.angle=90)

偏差圖
df2$mpg_z <- (df2$mpg-mean(df2$mpg))/sd(df2$mpg)
df2$mpg_grp <- factor(ifelse(df2$mpg_z<0, "low", "high"), levels = c("low", "high"))
head(df2[, c("name", "wt", "mpg", "mpg_grp", "cyl")])
?
ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",
palette = "jco", sort.val = "asc", sort.by.groups = FALSE, x.text.angle=60,
ylab = "MPG z-score", xlab = FALSE, legend.title="MPG Group")
ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",
??????????palette = "jco", sort.val = "desc", sort.by.groups = FALSE,
??????????x.text.angle=90, ylab = "MPG z-score", xlab = FALSE,
??????????legend.title="MPG Group", rotate=TRUE,#是否旋轉(zhuǎn)的參數(shù)
?ggtheme = theme_minimal())#一般我們用的偏差圖都是旋轉(zhuǎn)90度的直方圖

點(diǎn)圖
棒棒圖可以代替柱狀圖來(lái)展示相應(yīng)的結(jié)果,ggpubr包中也有相應(yīng)的函數(shù)。
這里簡(jiǎn)單的展示棒棒圖的做法,對(duì)于偏差圖與柱狀圖類似。
ggdotchart(df2, x="name", y="mpg", color = "cyl",
palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "ascending",
add = "segments", ggtheme = theme_pubr())

相關(guān)線性分析圖
對(duì)于雙變量X,Y都連續(xù)這個(gè)數(shù)據(jù)類型,一般采用相關(guān)線性分析來(lái)解決,這一部分小云也有寫過(guò)一片有關(guān)于相關(guān)性分析的圖的繪制。
data("iris")
p <- ggplot(data = iris, aes(x = Sepal.Width, y = Petal.Width, ?color = Species)) + geom_point() + geom_smooth(method = lm) +
scale_color_manual(values = c('#FF7400', '#009999', '#3914AF')) ?+
labs(title = 'iris') +
theme_bw() + theme(plot.title = element_text(hjust = 0.5)) +
stat_cor(method = 'pearson', aes(x = Sepal.Width, y = Petal.Width, ?color = Species))
p
?
從以上的展示中可以看到,ggpubr的全能性非常的強(qiáng),可以涵蓋很多圖形,并且快速的制作相應(yīng)的圖。
?好了,這樣我們ggpubr包的分享就完成了。小伙伴們?nèi)绻惺裁磫?wèn)題就和小云討論吧。

