如何在R语言中为散点图内特定范围外的数值标记上色
给超出范围的No标记设置红色(ggplot实现)
先确认你的样本数据:
df<-read.table (text=" No value 1 -1.25 2 -0.9 3 0.91 4 2.39 5 1.54 6 1.87 7 -2.5 8 -1.73 9 1.26 10 -2.1 ", header=TRUE)
你已经搭好了基础的ggplot框架,要实现value超出-2到+2范围的No标记变红,只需要在geom_text的美学映射里加一个color参数,用条件判断来控制颜色就好啦。
修改后的完整代码如下:
ggplot(df, aes(x=No, y=value)) + theme_bw()+ geom_text(aes(label=No, color=ifelse(value < -2 | value > 2, "red", "black")))+ geom_hline(yintercept=2, linetype="dashed", color = "red")+ geom_hline(yintercept=-2, linetype="dashed", color = "red")+ scale_color_identity() # 让ggplot直接识别我们指定的颜色值
关键说明:
- 在
geom_text的aes里,用ifelse做条件判断:如果value小于-2或者大于2,就把对应No的颜色设为"red",其余用默认的"black" - 最后加上
scale_color_identity()很重要,它能告诉ggplot不要把我们写的颜色字符串当成分类变量,而是直接解析为对应的颜色,这样红色才能正确显示出来
运行这段代码后,你就能看到No为4、7、10的标记变成红色,其他保持黑色,完全符合你的需求~
内容的提问来源于stack exchange,提问作者user330
相关产品推荐
相关产品推荐

