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

R语言table转data.frame绘制分色柱状图报错求助

问题原因分析
  • 行数不匹配报错:table()输出是输入向量的唯一值频数统计结果,你生成的10000个连续型正态随机数去重后仅存在574个唯一取值,因此as.data.frame(table())转换后仅574行,对应574个柱子的统计信息,和10000个颜色向量长度自然不匹配。
  • barplot参数报错:barplot()的height参数要求传入数值型向量/矩阵表示每个柱子的高度,你直接传入完整data.frame对象,未提取频数列向量,因此触发类型错误。
正确实现方案

方案1:绘制频数统计分色柱状图(原table逻辑的data.frame实现)

# 1. 生成模拟数据
set.seed(123)
x <- rnorm(10000)

# 2. 转换为频数统计data.frame
freq_df <- as.data.frame(table(x), stringsAsFactors = FALSE)

# 3. 生成匹配行数的颜色向量,可自定义规则
# 随机分色示例
col_vec <- sample(rainbow(nrow(freq_df)), nrow(freq_df))
# 按频数高低分色示例
# col_vec <- ifelse(freq_df$Freq > median(freq_df$Freq), "#e34a33", "#2b8cbe")

# 4. 调用barplot绘图
barplot(
  height = freq_df$Freq,
  col = col_vec,
  xlab = "数值",
  ylab = "出现频数",
  main = "正态随机数频数分色柱状图",
  xaxt = "n" # 因唯一值过多,隐藏x轴标签避免拥挤,不需要可删除
)

方案2:绘制原始10000个数值的分色柱状图(不做频数统计)

如果不需要统计频数,直接展示10000个原始值的大小,直接用原始向量绘图即可:

# 生成10000个匹配长度的颜色
col_full <- sample(c("red", "blue", "green", "purple"), 10000, replace = TRUE)
# 绘图
barplot(
  height = x,
  col = col_full,
  xlab = "样本序号",
  ylab = "数值大小",
  main = "原始随机数分色柱状图",
  xaxt = "n"
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:54:04