ggplot2_boxplot

2020-09-15 15:41:05 浏览数 (1)

ggplot_boxplot

sunqi
2020/8/2

概述

箱式图适用于连续变量的可视化展示,显示变量的四分位数,中位数、异常值等 同时箱式图可以预览两组之间的差异,为后续统计分析做准备

目标

  1. 绘制普通箱式图
  2. 绘制分组箱式图
  3. 绘制多组箱式图
  4. 设置展示组

主要函数

geom_boxplot()

参数:width:设置宽度 notch:是否展示缺口,缺口展示的是中位数的置信区间 color, size, linetype: 颜色、大小、线的类型 fill:填充颜色 outlier.colour, outlier.shape, outlier.size:箱式图须的设置 ## 代码

示例数据集ToothGrowth

代码语言:javascript复制
# 载入包

rm(list=ls())
library(ggplot2)
library(patchwork)
# 设置主题
theme_set(
  theme_classic()  
    theme(legend.position = "top")
  )
# 参数
data("ToothGrowth")
df <- ToothGrowth
# dose 分组,维生素C的剂量
# len目标变量,牙齿长度
df$dose <- as.factor(df$dose)


# 绘图

# 默认绘图
p=ggplot(df, aes(x = dose, y = len))

p1 <- p geom_boxplot()

# 添加缺口设计
p2 <- p   geom_boxplot(notch = TRUE, fill = "lightgray") 
  # 添加均值点
  stat_summary(fun= mean, geom = "point",
               shape = 18, size = 2.5, color = "#FC4E07")

#将图1和图2放在一起查看
p1 p2
代码语言:javascript复制
# 对于维生素剂量也可以更改显示顺序
# 通过scale_x_discrete()
p3 <- p   geom_boxplot()  
  # 只显示0.5和2
  scale_x_discrete(limits=c("0.5", "2"))

# 更改分组的显示顺序为2,0.5,1
p4 <- p   geom_boxplot()  
  scale_x_discrete(limits=c("2", "0.5", "1"))

p3 p4
代码语言:javascript复制
## Warning: Removed 20 rows containing missing values (stat_boxplot).
代码语言:javascript复制
# 更改颜色
# scale_color_manual()
# scale_fill_manual()

# 先根据分组设置颜色
p5 <- p   geom_boxplot(aes(color = dose)) 
  # 通过这个函数自定义颜色配置
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

# 更改填充的颜色
p6 <- p   geom_boxplot(aes(fill = dose))  
  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
# 对于color更改的是线的颜色,对于fill更改的是填充的颜色
p5 p6
代码语言:javascript复制
# 多组箱式图绘制

p7 <- p  
  # 这里对填充使用的supp变量
  # position_dodge设置组之间的距离
  geom_boxplot(aes(fill = supp), position = position_dodge(0.9) )  
  scale_fill_manual(values = c("#999999", "#E69F00"))
p7
代码语言:javascript复制
# 分面展示
p8 <- p7   facet_wrap(~supp)
p8

结束语

对于分面的问题还是最好不要尝试,会后悔。记得使用管道符、注释、养成好习惯。

love&peace

0 人点赞