02 R包ggpubr- ggballoomplot

289 阅读1分钟

函数作用

绘制图形矩阵,其中每个单元格包含一个点,其大小反映相应组件的相对大小。用于可视化由两个分类变量组成的列联表。

函数参数

image.png

示例

data <- read.delim(system.file("demo-data/housetasks.txt", package = "ggpubr"),row.names = 1)
data
#            Wife Alternating Husband Jointly
# Laundry     156          14       2       4
# Main_meal   124          20       5       4
# Dinner       77          11       7      13
# Breakfeast   82          36      15       7
# Tidying      53          11       1      57
# Dishes       32          24       4      53
ggballoonplot(data)

image.png

调整点的边框颜色和填充颜色

ggballoonplot(data, color = "red", fill = "#0073C2FF")

image.png 也可以和ggplot2一样,将颜色和填充参数映射为变量

my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF",
"#E16462FF", "#FCA636FF", "#F0F921FF") 
ggballoonplot(data, fill = "value")+
scale_fill_gradientn(colors = my_cols)

image.png

填充文字 show.label = T(默认FALSE)

my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF",
"#E16462FF", "#FCA636FF", "#F0F921FF") 
ggballoonplot(data, fill = "value", show.label = T, rotate.x.text = T)+
scale_fill_gradientn(colors = my_cols)

image.png

修改点的性状 shape(默认shape=21,可选值22, 23, 24, 25)

my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF",
"#E16462FF", "#FCA636FF", "#F0F921FF") 
plist <- lapply(c(21,22,23,24,25), FUN = function(x){
  ggballoonplot(data, fill = "value", show.label = T, rotate.x.text = T, shape = x)+
  scale_fill_gradientn(colors = my_cols) + ggplot2::labs(title = paste0("shape = ",x))})
patchwork::wrap_plots(plist, ncol = 5)

image.png

分面 facet.by

data("Titanic")
dframe <- as.data.frame(Titanic)
head(dframe)
#   Class    Sex   Age Survived Freq
# 1   1st   Male Child       No    0
# 2   2nd   Male Child       No    0
# 3   3rd   Male Child       No   35
# 4  Crew   Male Child       No    0
# 5   1st Female Child       No    0
# 6   2nd Female Child       No    0

ggballoonplot(
dframe, x = "Class", y = "Sex", size = "Freq", fill = "Freq",
facet.by = c("Survived", "Age"),
    ggtheme = theme_bw())+
    scale_fill_gradientn(colors = my_cols)

image.png 也可以通过管道连接facet()函数进行分面

ggballoonplot(
dframe, x = "Class", y = "Sex", size = "Freq", fill = "Freq",
    ggtheme = theme_bw()) %>% 
    facet(c('Survived','Age')) + 
    scale_fill_gradientn(colors = my_cols)

image.png 如果想要进一步美化该图,后续可以通过结合ggplot2语法进行美化。