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

如何去除ggplot堆叠柱状图图例中的灰色填充

修复ggplot图例灰色填充问题

问题核心:你使用geom_bar()时仅映射了colour = variable(柱状图边框色),但未设置填充色fill = variable,导致柱状图默认用灰色填充,图例也同步显示灰色填充块,仅边框是你指定的颜色。

以下两种解决方案:

方案一:同步设置填充色与边框色

直接将fill也映射到variable,并设置对应颜色,这样柱状图和图例都会显示指定颜色:

library(tidyverse)

data = data.frame(Date = seq(as.Date("2018-02-03"), as.Date("2019-05-05"), by = "days"),
                  var1 = runif(457),
                  var2 = runif(457)) %>%
    tidyr::pivot_longer(-Date, names_to = "variable", values_to = "value")

ggplot(data = data, 
       aes(x = Date, y = value, colour = variable, fill = variable)) + 
    geom_bar(stat = 'identity') + 
    theme_minimal() +
    scale_color_manual(values = c("#A90046", "#D1EAFE"), name = "") +
    scale_fill_manual(values = c("#A90046", "#D1EAFE"), name = "")

方案二:仅修改图例样式(保留柱状图灰色填充)

如果不需要改变柱状图的填充色,仅想让图例显示纯色块,可通过guides()强制覆盖图例的填充样式:

library(tidyverse)

data = data.frame(Date = seq(as.Date("2018-02-03"), as.Date("2019-05-05"), by = "days"),
                  var1 = runif(457),
                  var2 = runif(457)) %>%
    tidyr::pivot_longer(-Date, names_to = "variable", values_to = "value")

ggplot(data = data, 
       aes(x = Date, y = value, colour = variable)) + 
    geom_bar(stat = 'identity') + 
    theme_minimal() +
    scale_color_manual(values = c("#A90046", "#D1EAFE"), name = "") +
    guides(colour = guide_legend(override.aes = list(fill = c("#A90046", "#D1EAFE"))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:33:27