如何去除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
相关产品推荐
相关产品推荐

