今天我們要分享的R包是 ggpubr 包,它是一款基於ggplot2的可視化包,功能非常強大,能夠一行命令繪製出符合出版物要求的圖形。ggpubr 包可繪製的圖形類型非常多,有密度圖、直方圖、柱狀圖、餅圖、棒棒糖圖、Cleveland 點圖、箱線圖、小提琴圖、點帶圖、點圖、散點圖、線圖、誤差棒圖……哈哈,有木有很期待接下來這個 ggpubr 包的學習了呢!別急,這個包的內容實在是有點多哈,接下來我們會分3期進行詳細的講解,記得緊跟我們的學習哦~
先簡單介紹一下今天要分享的繪圖內容,分別有:密度圖、直方圖、柱狀圖、餅圖、棒棒糖圖、Cleveland 點圖。
接下來,先安裝 ggpubr 包:
# Install from CRAN:install.packages("ggpubr")library(ggpubr)
密度圖
#先構建數據集
set.seed(1234)df1 <- data.frame(sex=factor(rep(c("F", "M"), each=200)), weight=c(rnorm(200, 55), rnorm(200, 58)))
head(df1)# sex weight# 1 F 53.79293# 2 F 55.27743# 3 F 56.08444# 4 F 52.65430# 5 F 55.42912# 6 F 55.50606
tail(df1)# sex weight# 395 M 58.52875# 396 M 58.78939# 397 M 58.45710# 398 M 58.53883# 399 M 58.01464# 400 M 57.08351
# 基礎樣式,添加均值線和地毯線,密度圖展示不同性別分組下體重的分布,X軸為體重,Y軸為自動累計的密度ggdensity(df1, x = "weight", fill = "lightgray", add = "mean", rug = TRUE)
# 根據分組設置線條顏色和填充
ggdensity(df1, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800"))
# 更改自定義顏色ggdensity(df1, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = "npg")
# 限定x軸取值範圍ggdensity(df1, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = "npg") + xlim(53,60)
# 設置分組分面,更改邊框線類型ggdensity(df1, x = "weight", facet.by = "sex", linetype = "dashed", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800"))
接下來我們詳細解讀一下用到的 ggdensity 函數:用法:
ggdensity(data, x, y = "..density..", combine = FALSE, merge = FALSE, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ...)
參數:篇幅有限,沒有用到的自行探索~,有的參數在後面的其他圖形還會講解
data
所需的數據框 dataframe
x
進行作圖所需的數據
y
設置為密度/數量(density/count)
combine
對於多個變量的數據是否分面
merge
對於多個變量的數據是否合併,默認是FALSE
color, fill
線條顏色與填充色
palette
自定義顏色畫板
size
設置點和輪廓的大小
linetype
線條類型
alpha
透明度設置
title
設置標題
xlab
設置x軸標題
ylab
設置y軸標題
facet.by
設置分組分面
panel.labs
設置分面各組的標題
short.panel.labs
是否縮寫分面標題,邏輯值,默認是TRUE。
add
添加均值線或中位數線,選項有"mean" or "median"
add.params
給add參數的對象添加其他參數/屬性
rug
邏輯值,若為TRUE,在X軸上添加地毯線顯示樣本的分布
label
設置列標籤
font.label
設置標籤字體
repel
邏輯值,是否使用ggrepel避免字體重疊
label.rectangle
是否給標籤添加方框
ggtheme
設置畫圖主題
直方圖
用到的數據還是 df1,直方圖只是把密度還原成了原始數據counts值gghistogram(df1, x="weight", add = "mean", rug = TRUE, fill = "lightgray")
# 按照分組設置邊框顏色gghistogram(df1, x="weight", add = "mean", rug = TRUE, color ="sex", palette = c("#00AFBB", "#E7B800"))
# 按照分組設置填充顏色
gghistogram(df1, x="weight", add = "mean", rug = TRUE, fill = "sex", palette = c("#00AFBB", "#E7B800"))
# 同時設置邊框和填充顏色gghistogram(df1, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800"))