如何用Tidyverse绘制单条纯色折线、散点按变量分色的折线图
问题原因
你当前代码将color = imputation_indicator写在了全局ggplot()的美学映射(aes())中,所有默认继承全局映射的图层都会按照该分类变量拆分着色,因此折线会随分类变量拆分为多段显示不同颜色,不符合需求。
修正方案
将颜色映射规则从全局美学映射中移除,仅在散点图层单独配置按分类变量着色的规则,折线图层单独指定统一颜色即可,修正后可运行代码如下:
suppressPackageStartupMessages(library(mice)) suppressPackageStartupMessages(library(tidyverse)) airquality_indicator <- airquality %>% mutate(imputation_indicator = if_else(is.na(Ozone), "imputed", "observed")) airquality2 <- tidyr::fill(airquality_indicator, Ozone) head(airquality2, 30) %>% ggplot(aes(x = Day, y = Ozone)) + # 折线设置为单一统一颜色,不继承分类分色规则 geom_line(color = "#1f77b4") + # 仅散点按照imputation_indicator分类取值显示不同颜色 geom_point(aes(color = imputation_indicator)) + labs(y = "ozone (ppb)", x = "Day Number", color = "数据类型")
可选调整项
- 折线颜色可自行替换:将
geom_line()中的color参数值修改为你需要的颜色名或十六进制色值即可 - 如需自定义散点配色,可在绘图代码末尾追加
scale_color_manual()图层手动指定分类对应颜色,示例:
# 自定义散点:观测值为黑色,插补值为红色 + scale_color_manual(values = c("imputed" = "red", "observed" = "black"))
内容的提问来源于stack exchange,提问作者Ator
相关产品推荐
相关产品推荐

