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

如何在ggplot2的geom_col图表中移除图例的‘colour’项?

解决方法

你的问题出在错误地在全局aes()里设置了col='black',这会让ggplot把color当成需要映射的变量,从而生成额外的color比例尺(图例项)。另外你添加的scale_color_manual()也是多余的——你根本不需要对color变量做映射,只是想给柱子和误差线设置固定的黑色边框而已。

按照下面的步骤修改代码即可:

  • 移除全局aes()中的col='black'参数
  • 在geom_col()里直接设置color="black"(这是固定样式,不要放在aes映射里)
  • 删除多余的scale_color_manual(values = color_palette)语句

修改后的完整代码:

# 加载必要包
library(ggplot2)

# 数据集
data <- data.frame(name = c("prog1","prog2","prog3","prog4",
                            "prog1","prog2","prog3","prog4"), 
                   factor = c("fact1","fact1","fact1","fact1",
                              "fact2","fact2","fact2","fact2"), 
                   price = c(1,2,3,4,
                             10,11,12,13), 
                   sem = c(0.1,0.1,0.1,0.1,
                           0.1,0.1,0.1,0.1))

# 自定义颜色 palette
color_palette <- c("#000000","#E69F00","#56B4E9","#D55E00")

# 生成图表
ggplot(data, aes(x = name, y = price, group = factor, fill = factor))+
  geom_col(position = "dodge", width = 0.6, color = "black")+ # 这里设置柱子边框为黑色
  geom_errorbar(aes(ymin = price, ymax = price + sem), width = 0.3, position = position_dodge(0.5), color = "black") +
  guides(fill = guide_legend(NULL))+
  xlab("Scale")+
  ylab("Xlabel")+
  ggtitle("Title",
          subtitle = "Subtitle")+
  theme(plot.title = element_text(hjust=0.5, size = 16),
        plot.subtitle = element_text(hjust=0.5, size = 14),
        axis.text = element_text(size = 13),
        axis.title = element_text(size = 13),
        legend.key.size = unit(0.6, 'cm'))+
  scale_fill_manual(values = color_palette)+
  coord_flip()

这样修改后,就只会保留fill的比例尺,多余的color项就被移除了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:50:56