ggplot2直方图中scale_fill_manual颜色不生效,如何指定各层级颜色?
解决ggplot2堆叠直方图自定义颜色不生效的问题
你看到的提示Scale for fill is already present. Adding another scale for fill, which will replace the existing scale.就是问题核心:你连续调用了scale_fill_manual和scale_fill_discrete两个针对fill属性的刻度设置,ggplot会以最后调用的那个为准,所以你之前设置的自定义颜色被完全覆盖了。
正确的做法是把颜色、图例标题、斜体标签的配置合并到**同一个scale_fill_manual**里,不需要分开使用两个刻度函数:
library(ggplot2) # 构造数据 df <- data.frame( col1= round(rnorm(150),2), col2 = c(rep("c1",times=50),rep("c2",times=50),rep("c3",times=50)) ) # 绘制堆叠直方图 ggplot(df) + geom_histogram(aes(x = col1, fill = col2), position = "stack", col="black", bins = 30, alpha = 0.6) + scale_fill_manual( name = "Factor", # 设置图例标题 values = c("steelblue1", "yellow", "darkolivegreen2"), # 指定各层级的自定义颜色 breaks = c("c1", "c2", "c3"), # 保持层级的显示顺序 labels = c(expression(italic("c1")), expression(italic("c2")), expression(italic("c3"))) # 设置斜体标签 ) + theme_classic()
这样既保留了你需要的自定义颜色,又能实现斜体图例标签和自定义标题的需求,不会再出现刻度覆盖的问题。
内容的提问来源于stack exchange,提问作者Carlos Jimenez
相关产品推荐
相关产品推荐

