You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R新手求助:多列评分数据的箱线图绘制问题

解决R语言ggplot2箱线图绘制问题

问题分析

你的代码存在两个核心问题:

  • 每个动词对应的评分数量不一致(部分列有31个值,部分为30个),导致无法创建合法的data.frame
  • 数据是宽格式(每个动词单独一列),而ggplot2绘制分组箱线图需要长格式(一列存动词类别,一列存对应评分值)

解决步骤

1. 修正数据集,确保每列长度一致

检查并删除每个动词列中多余的评分值,保证每个动词对应30个参与者的评分。修正后的数据集代码如下:

# 修正后的数据集:每个动词对应30个评分
data_frame <- data.frame(
  arrivare = c(9,8,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,5,9,9,9,9,8),
  tornare = c(9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8),
  cambiare = c(9,8,9,9,9,9,9,8,9,9,9,9,9,8,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,8),
  continuare = c(8,8,6,9,8,5,2,7,7,9,1,2,7,8,1,9,9,9,8,9,6,9,1,6,9,1,8,9,8,9),
  vivere = c(9,3,7,1,9,9,2,8,5,6,3,2,9,6,9,2,9,9,5,1,9,1,9,1,1,1,1,9,9,8),
  abitare = c(1,1,1,1,1,7,1,1,2,7,1,2,3,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1),
  suonare = c(7,1,8,1,7,7,1,9,8,8,1,1,9,6,1,9,1,9,3,3,2,9,1,7,5,1,9,9,8,9)
)

2. 将宽格式数据转换为长格式

使用tidyr包的pivot_longer函数转换数据格式(若未安装该包需先安装):

# 安装并加载tidyr包
install.packages("tidyr")
library(tidyr)

# 转换为长格式:一列存动词名称,一列存对应评分
long_data <- pivot_longer(data_frame, 
                          cols = everything(), 
                          names_to = "动词", 
                          values_to = "评分")

3. 绘制箱线图

用ggplot2绘制符合需求的箱线图:

library(ggplot2)

ggplot(long_data, aes(x = 动词, y = 评分)) +
  geom_boxplot(fill = "lightgreen") +
  xlab("动词") +
  ylab("可接受性评分") +
  ggtitle("不同动词的可接受性评分箱线图") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签,避免重叠

额外说明

  • 转换为长格式是ggplot2处理分组数据的标准要求,每个观测值对应一行数据,便于映射到图形属性
  • 若不想安装tidyr,也可使用基础R的reshape函数完成格式转换,但tidyr的语法更简洁直观

内容的提问来源于stack exchange,提问作者Daler Fergani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:23:14