ggplot绘制密度图时颜色标签倒置问题咨询
问题原因及解决办法
为什么颜色和标签倒置?
你把fill参数放在了aes()括号里,这是核心问题。ggplot里aes()是用来映射数据变量到图形属性的,不是直接设置颜色值。当你写fill = "red"在aes里时,ggplot会把"red"、"blue"当成分类变量的两个水平,然后按默认的因子顺序(字母顺序,blue排在red前面)分配颜色,结果就出现了标签和实际颜色不匹配的倒置情况。
两种解决方式
1. 不需要图例,直接指定颜色
把fill移出aes(),放在geom_density()的参数里,直接设置填充色:
ggplot(dataset) + geom_density(aes(x = `Real Wage 1`), fill = "red", alpha = 0.5)+ geom_density(aes(x = `Real Wage 2`), fill = "blue", alpha = 0.5)+ theme_classic()
2. 需要图例的规范做法(推荐)
ggplot更适合处理长格式数据,先把数据整理成tidy格式,再通过变量映射来控制颜色,这样图例也能正确对应:
# 先加载tidyr包整理数据 library(tidyr) tidy_wage <- dataset %>% pivot_longer( cols = c(`Real Wage 1`, `Real Wage 2`), names_to = "工资类型", values_to = "实际工资" ) # 绘图并指定对应颜色 ggplot(tidy_wage, aes(x = 实际工资, fill = 工资类型)) + geom_density(alpha = 0.5) + scale_fill_manual(values = c(`Real Wage 1` = "red", `Real Wage 2` = "blue")) + theme_classic()
内容的提问来源于stack exchange,提问作者io_boh
相关产品推荐
相关产品推荐

