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

R语言直方图分箱着色:按其他列值总和绘制柱状图

我来帮你完成这个按分箱数值总和着色的柱状图需求~先把你的代码补全并优化,保证可复现且达到预期效果:

完整可复现代码

首先我们完善数据处理和绘图逻辑,核心是计算每个分箱+分组的数值总和,再把这个总和映射到柱子的颜色上:

# 加载必需的包
library(reshape)
library(ggplot2)
library(dplyr)

# 设置随机种子,确保结果可复现
set.seed(123)

# 生成原始数据
values = replicate(4, diff(c(0, sort(runif(92)), 1)))
colnames(values) = c("A","B","C","D")
counts = sample(10:100, 93, replace=T)
df = data.frame(cbind(values,"count"=counts))

# 转换为长格式、分箱,并计算每个分箱+分组的数值总和
mdf = melt(df, id="count")
mdf = mdf %>% 
  mutate(binCounts = cut(count, breaks = seq(0, 100, by = 5))) %>%
  group_by(binCounts, variable) %>%
  summarise(total_value = sum(value), .groups = "drop")

# 绘制最终柱状图
ggplot(mdf, aes(x = binCounts, y = total_value, fill = total_value)) +
  geom_col(position = "dodge") + # 分组柱子并排显示,若要堆叠可改为position = "stack"
  scale_fill_viridis_c(option = "plasma", name = "Total Value") + # 色盲友好的渐变色标
  labs(
    x = "Count Bins",
    y = "Total Value per Bin & Group",
    title = "Bar Chart Colored by Total Value in Each Count Bin"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签避免重叠

关键逻辑说明

  • 数据处理部分:通过group_by+summarise计算每个分箱(binCounts)和每个类别(A/B/C/D)的value总和,这个总和就是我们用来着色的核心依据。
  • 绘图部分:
    • fill = total_value把总和映射到柱子填充色,用连续色标直观展示数值大小;
    • position = "dodge"让同一分箱下的不同类别柱子并排,方便横向对比;
    • 最后调整x轴标签角度,解决分箱过多导致的标签重叠问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:08:37