如何使用R和ggplot修改线条颜色?代码颜色不生效问题求助
问题原因
你把颜色参数color = "blue"/color = "orange"放在了aes()内部,此时ggplot会把这些字符串当成分类变量的取值,而非直接应用的颜色值,所以它会调用默认离散色板给这两个“类别”上色,而非你指定的蓝、橙。
两种解决方法
方法一:直接在geom_line外设置颜色(简单场景)
把颜色参数从aes()中移出,作为geom_line的独立参数,直接指定颜色:
q <- ggplot(data = graph_data, aes(x = Year_NA)) + geom_line(aes(y = MTCT_rate_at_before_birth_mean), color = "blue") + geom_line(aes(y = Postnatal_MTCT_rate_to_18_months_from_HIV_diagnosed_mothers_mean), color = "orange") + labs(title = "MTCT rate postnatal vs. prenatal Vs. Year", y = "MTCT Rate", x = "Year") + theme_bw() show(q)
方法二:用scale_color_manual映射自定义颜色(规范场景)
如果需要保留图例并自定义颜色,建议在aes()中使用语义化的分类标签,再通过scale_color_manual将标签映射到对应颜色:
q <- ggplot(data = graph_data, aes(x = Year_NA)) + geom_line(aes(y = MTCT_rate_at_before_birth_mean, color = "MTC before birth")) + geom_line(aes(y = Postnatal_MTCT_rate_to_18_months_from_HIV_diagnosed_mothers_mean, color = "MTCT after birth")) + labs(title = "MTCT rate postnatal vs. prenatal Vs. Year", y = "MTCT Rate", x = "Year", color = "") + scale_color_manual(values = c("MTC before birth" = "blue", "MTCT after birth" = "orange")) + theme_bw() show(q)
内容的提问来源于stack exchange,提问作者Corrin Merry
相关产品推荐
相关产品推荐

