R语言如何基于3个变量在同一张图中绘制双箱线图
R语言同图表展示两个箱线图实现代码
方法1:基于ggplot2实现(推荐,美化灵活)
- 先安装并加载所需依赖包
- 将宽格式数据转换为长格式后分组绘图
完整代码如下:
# 未安装依赖包先执行下一行安装 # install.packages(c("ggplot2", "tidyr")) library(ggplot2) library(tidyr) # 生成示例数据 set.seed(42) data <- data.frame(Id=1:20, Q_3_1=sample(1:6, 20, replace=TRUE), Q_3_2=sample(1:6, 20, replace=TRUE), Level=sample(c("AAAA", "BBBB", "CCCC", "DDDD"), 20, replace=TRUE)) # 宽表转长表,提取需绘制的两个指标列 data_long <- pivot_longer(data, cols = c(Q_3_1, Q_3_2), names_to = "指标", values_to = "分值") # 绘制箱线图 ggplot(data_long, aes(x = 指标, y = 分值, fill = 指标)) + geom_boxplot(width = 0.6) + labs(title = "两个指标分值分布对比", x = "指标", y = "分值") + theme_bw()
方法2:基于R基础绘图实现(无需加载第三方包)
如果不想安装额外包,可直接用基础绘图函数实现:
# 生成示例数据 set.seed(42) data <- data.frame(Id=1:20, Q_3_1=sample(1:6, 20, replace=TRUE), Q_3_2=sample(1:6, 20, replace=TRUE), Level=sample(c("AAAA", "BBBB", "CCCC", "DDDD"), 20, replace=TRUE)) # 直接绘制双箱线图 boxplot(data$Q_3_1, data$Q_3_2, names = c("Q_3_1", "Q_3_2"), col = c("lightblue", "orange"), main = "两个指标分值分布对比", xlab = "指标", ylab = "分值")
内容的提问来源于stack exchange,提问作者Perlak99
相关产品推荐
相关产品推荐

