原文鏈接:ggpubr: ‘ggplot2’ Based Publication Ready Plots
1.ggpubr
Hadley Wickham編寫的ggplot2是出色且靈活的軟件包,可用于R中的優(yōu)雅數(shù)據(jù)可視化。但是,默認(rèn)生成的繪圖必須先進(jìn)行一些格式化,然后才能發(fā)送它們進(jìn)行發(fā)布。 此外,要自定義ggplot,語法是不透明的,這對(duì)沒有高級(jí)R編程技能的研究人員增加了難度。
“ ggpubr”軟件包提供了一些易于使用的功能,用于創(chuàng)建和自定義基于“ ggplot2”的可發(fā)布出版物的圖表。
在https://rpkgs.datanovia.com/ggpubr上可找到更多信息。
幕布鏈接:https://share.mubu.com/doc/6kFLvwuA6he

ggpubr
2.ggpubr安裝及加載
2.1 從CRAN安裝
install.packages("ggplot2")
install.packages("ggpubr")
2.2 從Github安裝最新版
# Install
if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/ggpubr")
3.分布圖 Distribution
library(ggpubr)
#>加載所需的包: ggplot2
#>加載所需的包: magrittr
# 創(chuàng)建數(shù)據(jù)集
set.seed(1234)
wdata = data.frame(
sex = factor(rep(c("F", "M"), each=200)),
weight = c(rnorm(200, 55), rnorm(200, 58)))
# head(dataframe),默認(rèn)查看數(shù)據(jù)集前6行數(shù)據(jù)
head(wdata, 4)
# 帶有平均線和邊際地毯的密度圖
# 按組更改輪廓和填充顏色(“性別”)
# 使用自定義調(diào)色板
ggdensity(wdata, x = "weight",
add = "mean", rug = TRUE,
color = "sex", fill = "sex",
palette = c("#00AFBB", "#E7B800"))

帶有平均線和邊際地毯的密度圖
#帶有平均線和邊緣地毯的直方圖
#按組更改輪廓和填充顏色(“性別”)
#使用自定義調(diào)色板
gghistogram(wdata, x = "weight",
add = "mean", rug = TRUE,
color = "sex", fill = "sex",
palette = c("#00AFBB", "#E7B800"))

帶有平均線和邊緣地毯的直方圖
4.箱形圖和小提琴圖 Box plots and violin plots
# 加載數(shù)據(jù)
data("ToothGrowth")
df <- ToothGrowth
# head(dataframe),默認(rèn)查看數(shù)據(jù)集前6行數(shù)據(jù)
head(df, 4)
#帶有抖動(dòng)點(diǎn)的箱形圖
#按組更改輪廓顏色:劑量
#使用自定義調(diào)色板
#添加抖動(dòng)點(diǎn)并按組更改形狀
p <- ggboxplot(df, x = "dose", y = "len",
color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"),
add = "jitter", shape = "dose")
p

帶有抖動(dòng)點(diǎn)的箱形圖
# 添加p值比較組
# 指定所需的比較
my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
p + stat_compare_means(comparisons = my_comparisons)+
#添加成對(duì)比較p值
stat_compare_means(label.y = 50)
# 添加全局p值

image.png
# 內(nèi)嵌箱線圖的小提琴圖
# 按組更改填充顏色:劑量
# 添加帶有白色填充顏色的箱線圖
ggviolin(df, x = "dose", y = "len", fill = "dose",
palette = c("#00AFBB", "#E7B800", "#FC4E07"),
add = "boxplot", add.params = list(fill = "white"))+
stat_compare_means(comparisons = my_comparisons, label = "p.signif")+
# 添加顯著性等級(jí)
stat_compare_means(label.y = 50)
# 添加全局p值

內(nèi)嵌箱線圖的小提琴圖
5.條形圖 Bar plots
- Demo data set
# 加載數(shù)據(jù)
data("mtcars")
dfm <- mtcars
# 將cyl變量轉(zhuǎn)換為因子
dfm$cyl <- as.factor(dfm$cyl)
# 添加組名
dfm$name <- rownames(dfm)
# 檢查數(shù)據(jù)
head(dfm[, c("name", "wt", "mpg", "cyl")])
- Ordered bar plots
通過分組變量“ cyl”更改填充顏色。 排序?qū)⒃谌址秶鷥?nèi)進(jìn)行,但不會(huì)按組進(jìn)行。
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # 通過cyl更改填充顏色
color = "white", # 將條形邊框顏色設(shè)置為白色
palette = "jco", # jco journal color palett. see ?ggpar
sort.val = "desc", # 以升序?qū)χ颠M(jìn)行排序
sort.by.groups = FALSE, # 不要在每個(gè)組內(nèi)排序
x.text.angle = 90 # 垂直旋轉(zhuǎn)x軸文本
)

image.png
ggbarplot(dfm, x = "name", y = "mpg",
fill = "cyl", # 通過cyl更改填充顏色
color = "white", # 將條形邊框顏色設(shè)置為白色
palette = "jco", # jco journal color palett. see ?ggpar
sort.val = "asc", # 按降序?qū)χ蹬判? sort.by.groups = TRUE, # 在每個(gè)組內(nèi)排序
x.text.angle = 90 # 垂直旋轉(zhuǎn)x軸文本

image.png
6.偏差圖 Deviation graphs
偏差圖顯示定量值與參考值的偏差。 在下面的R代碼中,我們將繪制mtcars數(shù)據(jù)集中的mpg z得分。
計(jì)算mpg數(shù)據(jù)的z得分:
# 計(jì)算mpg的z-score
dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg)
dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"),
levels = c("low", "high"))
# 檢查數(shù)據(jù)
head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")])
# 創(chuàng)建一個(gè)有序的條形圖,根據(jù)mpg的級(jí)別進(jìn)行著色:
ggbarplot(dfm, x = "name", y = "mpg_z",
fill = "mpg_grp", # 通過mpg_level更改填充顏色
color = "white", # 將條形邊框顏色設(shè)置為白色
palette = "jco", # jco journal color palett. see ?ggpar
sort.val = "asc", # 按降序?qū)χ蹬判? sort.by.groups = FALSE, # 不要在每個(gè)組內(nèi)排序
x.text.angle = 90, # 垂直旋轉(zhuǎn)x軸文本
ylab = "MPG z-score",
xlab = FALSE,
legend.title = "MPG Group"

image.png
旋轉(zhuǎn)繪圖:使用rotate = TRUE和sort.val =“ desc”
ggbarplot(dfm, x = "name", y = "mpg_z",
fill = "mpg_grp", # 通過mpg_level更改填充顏色
color = "white", # 將條形邊框顏色設(shè)置為白色
palette = "jco", # jco journal color palett. see ?ggpar
sort.val = "asc", # 按降序?qū)χ蹬判? sort.by.groups = FALSE, # 不要在每個(gè)組內(nèi)排序
x.text.angle = 90, # 垂直旋轉(zhuǎn)x軸文本
ylab = "MPG z-score",
legend.title = "MPG Group",
rotate = TRUE,
ggtheme = theme_minimal()

image.png
7.點(diǎn)圖 Dot charts
- 棒棒糖圖
當(dāng)您具有大量要可視化的值時(shí),棒棒糖圖表可以代替條形圖。
棒棒糖圖表由分組變量“ cyl”著色
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按組區(qū)分顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定義調(diào)色板
sorting = "ascending", # 按降序?qū)χ颠M(jìn)行排序
add = "segments", # 將y = 0的段添加到點(diǎn)
ggtheme = theme_pubr() # 選擇ggplot2主題

棒棒糖圖
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按組區(qū)分顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定義調(diào)色板
sorting = "descending", # 按降序?qū)χ颠M(jìn)行排
add = "segments", # 將y = 0的段添加到點(diǎn)
rotate = TRUE, # 垂直旋轉(zhuǎn)圖
group = "cyl", # 按cyl進(jìn)行分組
dot.size = 6, # 設(shè)置dot點(diǎn)大小
label = round(dfm$mpg), # 添加mpg值標(biāo)簽
font.label = list(color = "white", size = 9,
vjust = 0.5), # 調(diào)整標(biāo)簽參數(shù)
ggtheme = theme_pubr() # ggplot2 theme
)

image.png
ggdotchart(dfm, x = "name", y = "mpg_z",
color = "cyl", # 按組區(qū)分顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定義調(diào)色板
sorting = "descending", # 按降序?qū)χ颠M(jìn)行排序
add = "segments", # 將y = 0的段添加到點(diǎn)
add.params = list(color = "lightgray", size = 2), # 更改元素的顏色和大小
group = "cyl", # 按cyl進(jìn)行分組
dot.size = 6, # 設(shè)置dot點(diǎn)大小
label = round(dfm$mpg_z,1), # 添加mpg值標(biāo)簽
font.label = list(color = "white", size = 9,
vjust = 0.5), # 調(diào)整標(biāo)簽參數(shù)
ggtheme = theme_pubr() # ggplot2 theme
)+
# 添加水平線
geom_hline(yintercept = 0, linetype = 2, color = "lightgray")

image.png
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按組區(qū)分顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 自定義調(diào)色板
sorting = "descending", # 按降序?qū)χ颠M(jìn)行排序
rotate = TRUE, # 旋轉(zhuǎn)繪圖
dot.size = 2, # 設(shè)置dot點(diǎn)大小
y.text.col = TRUE, # 按組上色y軸標(biāo)簽
ggtheme = theme_pubr() # ggplot2 theme
)+
theme_cleveland() # 添加虛線網(wǎng)格

克里夫蘭圓點(diǎn)圖 Cleveland’s dot plot
More
Find out more at https://rpkgs.datanovia.com/ggpubr.
Blog posts
- A. Kassambara. ggpubr R Package: ggplot2-Based Publication Ready Plots