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

ggplot绘制堆叠柱状图报错:Unknown colour name: SH求助

解决ggplot堆叠柱状图"Unknown colour name: SH"错误的建议

可能的原因及对应解法

  • 错误将数据列名当作颜色值使用
    如果你直接在geom_bar的fill/colour参数里写了SH这类数据列名,ggplot会把它识别成颜色名称,但SH不是默认的合法颜色名(比如red、blue这类),就会报错。
    正确做法是先把宽格式数据转成长格式(ggplot更适配长数据结构),再统一映射填充色:

    # 加载tidyr包处理数据格式
    library(tidyr)
    # 转换为长格式:将UM/SM/UL/SL/UH/SH转为分类列,对应值转为数值列
    long_data <- pivot_longer(your_data, cols = c(UM, SM, UL, SL, UH, SH), 
                              names_to = "group", values_to = "count")
    
    # 绘制堆叠柱状图
    ggplot(long_data, aes(x = PA, y = count, fill = group)) +
      geom_bar(stat = "identity")
    

    转换后group列包含所有待堆叠的类别,ggplot会自动为每个类别分配颜色,不会把类别名误判为颜色值。

  • 自定义颜色时参数使用错误
    如果要给每个类别指定自定义颜色,要在scale_fill_manual()中关联类别和颜色值,而非直接在geom_bar里写类别名:

    ggplot(long_data, aes(x = PA, y = count, fill = group)) +
      geom_bar(stat = "identity") +
      scale_fill_manual(values = c(
        UM = "#E64B35", SM = "#4DBBD5", UL = "#00A087",
        SL = "#3C5488", UH = "#F39B7F", SH = "#8491B4"
      ))
    

    这里SH是类别标识,对应后面的十六进制颜色值,不会触发颜色名称错误。

  • 参数或名称拼写失误
    检查代码里是否把fill(填充颜色)误写成colour(描边颜色),或者类别名有没有拼写错误,比如把SH写成了其他单词,导致ggplot误将其识别为颜色名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:03:11