调整ggplot2代码后图表颜色及图例异常变化,求问题排查
问题原因与解决方法
核心原因
你遇到的图表颜色异常、新增图例的问题,根源是把文字颜色、大小的固定值错误放进了aes()映射函数里:
- 在ggplot2中,
aes()的作用是把数据列和图形属性(比如柱形填充色、坐标轴)绑定。如果把color='black'、size=geom.text.size这种固定值塞进aes(),ggplot会把它们当成分组变量处理,自动生成对应的颜色、大小图例——这就是新增图例的由来。 - 同时,因为
color被当成了映射属性,不会直接生效为黑色,反而会干扰原本fill=Arbeit的颜色显示逻辑,导致图表颜色看起来变了。
解决代码
把固定属性移到aes()外面,作为geom_text()的直接参数即可:
geom.text.size = 7 theme.size = (14/5) * geom.text.size surveyresponses_Freizeit_Master_for_stacked %>% pivot_longer(-Arbeit, names_to = "Group", values_to = "value") %>% summarise(count = sum(value), .by = c("Arbeit", "Group")) %>% ggplot(aes(Group, count, fill = Arbeit)) + geom_col() + geom_text( aes(label = ifelse(count != 0, count, "")), nudge_y = 0.2, color = 'black', # 移到aes外,作为固定属性 size = geom.text.size # 同理移到外面 ) + theme(axis.text = element_text(size = theme.size, colour = "black")) + theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust = 1))
这样修改后,文字会保持黑色、指定大小,多余的图例消失,柱形颜色也会恢复正常。
内容的提问来源于stack exchange,提问作者Jules
相关产品推荐
相关产品推荐

