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

如何在R语言中为堆叠条形图添加颜色?含具体场景与代码问题

嘿,我来帮你搞定这个堆叠条形图的颜色问题!你的基础代码框架是对的,但可能是因为owns.car字段的类型或者默认颜色映射不符合预期导致的。我们可以通过几个小调整来精准控制颜色,同时让图表更易读:

第一步:先把分类字段转成因子类型

你的passed.test和owns.car应该是0/1的数值,ggplot默认会把它们当成连续变量处理,转成因子后能明确区分分类,还能设置友好的标签:

# 转换字段类型并添加直观标签
carData$passed.test <- factor(carData$passed.test, levels = c(0, 1), labels = c("未通过", "通过"))
carData$owns.car <- factor(carData$owns.car, levels = c(0, 1), labels = c("无车", "有车"))

第二步:自定义堆叠部分的颜色

用scale_fill_manual()可以完全指定每个类别的颜色,避免默认颜色不符合你的需求。下面是完整的优化代码:

library(ggplot2)

# 读取数据
carData <- read.csv(file="~/Desktop/carData.csv", head=TRUE, sep=";")

# 处理分类字段
carData$passed.test <- factor(carData$passed.test, levels = c(0, 1), labels = c("未通过", "通过"))
carData$owns.car <- factor(carData$owns.car, levels = c(0, 1), labels = c("无车", "有车"))

# 绘制带自定义颜色的堆叠条形图
ggplot(carData, aes(x = passed.test, fill = owns.car)) +
  geom_bar(position = "stack") + # 显式指定堆叠位置(默认就是stack,写出来更清晰)
  scale_fill_manual(values = c("无车" = "#e0e0e0", "有车" = "#3498db")) + # 替换成你喜欢的颜色值
  labs(
    x = "驾照考试结果",
    y = "计数",
    fill = "汽车拥有情况",
    title = "驾照考试通过情况与汽车拥有率对比"
  ) +
  theme_light() # 可选的美观主题

备选方案:用预定义调色板

如果你不想手动选颜色,也可以用scale_fill_brewer()调用R自带的专业调色板,比如:

scale_fill_brewer(palette = "Set1")

这样调整后,你就能得到每个堆叠部分颜色清晰区分的条形图,同时x轴和图例的标签也更易懂啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:22