修改ggplot分组条形图(dodged bar chart)默认颜色遇阻求助
自定义ggplot分组条形图填充颜色无效的问题
我有如下数据框:
from variable value 1 ASM cent.degree 0.208333333 2 AUS cent.degree 0.958333333 3 COK cent.degree 0.166666667 4 FJI cent.degree 0.916666667 5 FSM cent.degree 0.208333333 6 GUM cent.degree 0.208333333 26 ASM cent.betweenness 0.000000000 27 AUS cent.betweenness 0.588500000 28 COK cent.betweenness 0.000000000 29 FJI cent.betweenness 0.509333333 30 FSM cent.betweenness 0.001666667 31 GUM cent.betweenness 0.001666667
我用以下代码生成一张按颜色区分4个变量的分组条形图:
geom_bar(stat='identity', position='dodge') + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + theme(legend.position="bottom") + ggtitle("Központiság mutatók") + #scale_y_continuous(trans = "log2") + scale_x_discrete(name = "Származás") + scale_fill_discrete(name = NULL, labels = c("Degree centrality (Népszerűség)", "Closeness centrality (Befolyás)", "Betweenness centrality (Alkuerő)", "Sajátvektor központiság (Státusz)"))
现在我尝试添加自定义颜色,使用了scale_fill_manual(values = oc.color[1:4])(其中oc.color是十六进制颜色码向量),但系统提示:
Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.
而且图表仍然使用ggplot的默认颜色,完全没有应用我设置的自定义颜色,请问该如何解决这个问题?
解决方案
问题的核心在于你同时调用了scale_fill_discrete()和scale_fill_manual()——ggplot不允许同时存在两个针对fill的比例尺,后加载的会覆盖前一个,但这里你的写法导致自定义颜色没有正确生效。正确的做法是把标签设置和自定义颜色整合到同一个scale_fill_manual()中,去掉多余的scale_fill_discrete():
geom_bar(stat='identity', position='dodge') + theme(axis.text.x = element_text(angle = 90, hjust = 1)) + theme(legend.position="bottom") + ggtitle("Központiság mutatók") + #scale_y_continuous(trans = "log2") + scale_x_discrete(name = "Származás") + scale_fill_manual( name = NULL, labels = c("Degree centrality (Népszerűség)", "Closeness centrality (Befolyás)", "Betweenness centrality (Alkuerő)", "Sajátvektor központiság (Státusz)"), values = oc.color[1:4] )
另外还要注意两个细节:
- 确保
oc.color是长度为4的十六进制颜色向量,比如c("#E69F00", "#56B4E9", "#009E73", "#F0E442"),长度不匹配会导致颜色分配出错。 - 检查你数据中
variable列的因子水平顺序,确保oc.color[1:4]的顺序和你设置的标签顺序一一对应,避免出现颜色和变量不匹配的情况。
内容的提问来源于stack exchange,提问作者Szörö Cukor
相关产品推荐
相关产品推荐

