如何在ggplot中修改数据框内特定点的颜色
解决方案:修改指定条件点的颜色
方法一:通过颜色映射实现
给数据框添加标识列,用ifelse判断目标条件,再将该列映射到颜色美学,最后隐藏不需要的图例:
library(ggplot2) colpf <- c(0,0,0,1,1,1,2,2,2) coldf <- c(0,1,2,0,1,2,0,1,2) x <- seq(0,8,1) y <- seq(0,8,1) df <- data.frame(colpf,coldf,x,y) # 生成颜色分组标识 df$point_color <- ifelse(df$colpf == 1 & df$coldf == 1, "target", "normal") ggplot(data = df) + geom_point(aes(x=x, y=y, color=point_color)) + # 手动指定对应颜色 scale_color_manual(values = c("normal" = "black", "target" = "red")) + # 隐藏颜色图例 guides(color = "none")
方法二:分层绘制点
先绘制所有默认颜色的点,再单独绘制符合条件的红色点,后绘制的点会覆盖在先绘制的点之上:
library(ggplot2) colpf <- c(0,0,0,1,1,1,2,2,2) coldf <- c(0,1,2,0,1,2,0,1,2) x <- seq(0,8,1) y <- seq(0,8,1) df <- data.frame(colpf,coldf,x,y) ggplot(data = df) + # 绘制全部点,默认黑色 geom_point(aes(x=x, y=y), color="black") + # 筛选目标点,绘制红色 geom_point( data = subset(df, colpf == 1 & coldf == 1), aes(x=x, y=y), color="red" )
两种方法都无需额外绘制条件相关元素,仅修改目标点颜色。方法一更适合批量设置多组点颜色的场景,方法二更直观简洁,适合单组目标点的修改。
内容的提问来源于stack exchange,提问作者Fish_Person
相关产品推荐
相关产品推荐

