ggplot中手动调整因子颜色仅高亮单个因子水平的实现方法
aes()内仅支持直接引用传入ggplot的数据框的列名,无法用$符号提取单个因子水平做映射。你可以通过手动指定颜色标度的方式实现高亮需求,两种常用实现方案如下:
- 方案1:手动指定所有因子水平的颜色,适合因子水平较少的场景
library(ggplot2) library(dplyr) graph <- dat %>% ggplot(aes(x = year, y = length, color = Something)) + geom_point(size = 2) + scale_color_manual(values = c( "good" = "black", "bad" = "black", "ok" = "red" # 可替换为任意你需要的高亮色 ))
- 方案2:生成临时逻辑列做映射,适合因子水平多、不想逐个指定颜色的场景
graph <- dat %>% mutate(is_ok = Something == "ok") %>% ggplot(aes(x = year, y = length, color = is_ok)) + geom_point(size = 2) + scale_color_manual(values = c( "TRUE" = "red", # 高亮色 "FALSE" = "black" ), name = "Something", # 自定义图例名称 labels = c("其他水平", "ok")) # 自定义图例标签
如果不需要展示颜色图例,在代码末尾追加+ guides(color = "none")即可。
内容的提问来源于stack exchange,提问作者Em Manuel
相关产品推荐
相关产品推荐

