R语言将4组数据绘制在统一箱型图上(附代码)

一、boxplot(箱型图/箱形图)简单介绍

图1 箱型图示意图(源于网络)

下限:最小值(Minimum),数据中的最小值。
下四分位数(Q1):将数据按照大小排序(一般是由小到大排列),然后找到数据中位于25%位置的值,即第一个四分位数。如果数据点个数(n)是奇数,则Q1是排在中间位置的值;如果是偶数,则是中间两个值的平均数。
中位数(Median):数据的中位数,即第50%位置的值。与Q1类似,奇数个数据时是中间位置的值,偶数个数据时是中间两个值的平均数。
上四分位数(Q3):将数据按照大小排序,然后找到数据中位于75%位置的值,即第三个四分位数。同样,如果数据点个数是奇数,则Q3是排在中间位置的值;如果是偶数,则是中间两个值的平均数。
下限:最大值(Maximum),数据中的最大值。

这五个值通常被用来描述数据的中心位置和离散程度,以便绘制箱型图。箱型图的盒子部分就由Q1、中位数和Q3组成,箱型图的横线(whiskers)则延伸到最小值和最大值,或者在数据中没有明显异常值时延伸到1.5倍的四分位距(IQR)外的位置。

补充:

boxplot的最大值计算方法:上四分位数+1.5*四分位距(即上下四分位具体数值的做差)。

例如:Q1=2,Q3=32

则Max=32+1.5*(32-2)=77。

同理最大值就是下四分位数-1.5*四分位距。

二、R语言将4组数据绘制在统一箱型图上 代码:

# 加载所需的包
library(ggplot2)

# 创建数据框
data <- data.frame(values = c(values1, values2, values3, values4),
                   group = rep(c("XXX", "XXX", "XXX", "XXX"), #根据需求设置
                               sapply(all_values, length)))
# 重新排序group因子
data$group <- factor(data$group, levels = c("XXX", "XXX", "XXX", "XXX"))
#如果R语言绘制的结果和values1234顺序有变化,可以用这个代码

# 自定义函数计算分位数
quantile_fun <- function(x) {
  quantiles <- quantile(x, probs = c(0.1, 0.2, 0.3, 0.7, 0.8, 0.9))
  data.frame(y = quantiles, ymin = quantiles, ymax = quantiles)
}#因为自身研究需要设置的,可以更改

ggplot(data, aes(x = group, y = values)) +
  coord_cartesian(ylim = c(-100, 100))+#设置y轴范围
  scale_y_continuous(breaks = seq(-100, 100, by = 10))+#设置y轴的刻度间隔
  stat_boxplot(geom = "errorbar", 
               width = 0.1, 
               size = 0.5, 
               position = position_dodge(0.6), 
               color = "black") +
  geom_boxplot(aes(fill = group), 
               color = "black", 
               size = 0.5, 
               width = 0.3, 
               outlier.fill = "black", 
               outlier.shape = 19, 
               outlier.size = 0.1, 
               outlier.alpha = 0.1, 
               notch = FALSE) +
  stat_summary(fun.data = quantile_fun, geom = "errorbar", width = 0.5, aes(color = group))+#加需要的分位数短线 
  stat_summary(fun.y = mean, geom = "point", shape = 19, size = 3, color = "blue")+#加均值点
  labs(title = "", x = "", y = "")+ #根据需要设置图名、x\y轴名
  geom_hline(yintercept = 0, linetype = "dashed", color = "red")+#在y轴0刻线加了一条辅助线
  theme(
    axis.title = element_text(size = 18), 
    axis.text = element_text(size = 14),
    axis.line = element_line(linewidth = 1, color = "black"), 
    axis.ticks.length = unit(-0.2, "cm"), # 将刻度线向内移动
    panel.border = element_rect(color = "black", fill = NA, linewidth = 1),
    panel.background = element_rect(fill = NA)
  )

这是结果图,隐私需要打马赛克了。

注意ggplot(data, aes(x = group, y = values)) +中这个"+",很多时候运行不出结果是调整程序的时候忘记"+"了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值