R ggplot:更改散点图中特定点的颜色

R ggplot:更改散点图中特定点的颜色,r,ggplot2,R,Ggplot2,我正在绘制生物年龄与3年期间的年代学年龄的对比图,我试图绘制一个散点图,只突出3年期间穿过abline的点。这可能吗?下面是我目前必须绘制散点图的一些数据和代码 head(mydata) SampleID ba_baseline ba_follow up ba_diff age_baseline age_followup age_diff 1 X3_0 59.03487 58.91077 -0.1

我正在绘制生物年龄与3年期间的年代学年龄的对比图,我试图绘制一个散点图,只突出3年期间穿过abline的点。这可能吗?下面是我目前必须绘制散点图的一些数据和代码

head(mydata)

 SampleID       ba_baseline     ba_follow up ba_diff           age_baseline          age_followup age_diff
1      X3_0        59.03487        58.91077 -0.12409581               73.80               77.28    3.48
2      X5_0        58.96254        61.33064  2.36810749               82.71               85.45    2.74
3      X6_0        56.41316        52.37936 -4.03380246               73.14               76.95    3.81
4      X9_0        53.63238        56.31112  2.67873665               76.84               80.03    3.19

ggplot(mydata) + 
  geom_point(aes (x = mydata$age_baseline , y= mydata$ba_baseline),color="blue") + 
  geom_point (aes (x = mydata$age_followup, y = mydata$ba_followup),color="red") + 
  xlab("Age") + 
  ylab ("BA") +
  cleanup +
  geom_segment(data = mydata , aes(x=mydata$age_baseline, xend = mydata$age_followup, y=mydata$ba_baseline, yend = mydata$ba_followup), color=factor(ifelse(mydata$ba_diff < 0 ,"dark green", "blue"))) +
  geom_abline(intercept=0 , slope = 1 , linetype ="dashed", color="black")

也许可以事先比较
age.*
baseline.*
并创建一个变量,如下所示:

mydata %<>%
  mutate(baseline_toggle = ifelse(ba_baseline/age_baseline > 1, 0, 1),
         followup_toggle = ifelse(ba_followup/age_followup > 1, 0, 1),)

ggplot(df) + 
  geom_point(aes (x = age_baseline , y = ba_baseline, color = baseline_toggle) + 
  geom_point (aes (x = age_followup, y = ba_followup, colour = followup_toggle )) + 
  xlab("Age") + 
  ylab ("BA") +
  geom_abline(intercept=0 , slope = 1 , linetype ="dashed", color="black")
mydata%%
变异(基线切换=ifelse(基础基线/年龄基线>1,0,1),
followup\u toggle=ifelse(ba\u followup/age\u followup>1,0,1),)
ggplot(df)+
几何点(aes(x=年龄基线,y=基本基线,颜色=基线切换)+
几何点(aes(x=年龄跟踪,y=背景跟踪,颜色=跟踪切换))+
xlab(“年龄”)+
ylab(“BA”)+
几何图形(截距=0,斜率=1,线型=“虚线”,颜色=“黑色”)

然后,您可以根据自己的意愿对它们进行颜色编码。

我不太确定是否理解您试图实现的结果,但感觉您正在寻找
geom_smooth()
?一点:您不需要像
mydata$age\u baseline
这样的代码,因为
age\u baseline
就足够了。问题:您的意思是要突出显示1:1行上方的所有点,还是只突出显示数据穿过行后的第一个点?此外,如果您提供一个易于复制和粘贴的数据集,这会有所帮助,我们可以演示例如,使用
dput
@Lyngbakr感谢指针。我的意思是所有的图都是黑色的,只有在基线处位于abline之上,在后续处位于abline之下的图(反之亦然)要上色。我还使用dput在问题中输入了数据的前5行%%应该是什么函数?我看到了“找不到函数”%%“”。忘了提到-您需要
magrittr
。这是复合赋值管道操作符。
mydata %<>%
  mutate(baseline_toggle = ifelse(ba_baseline/age_baseline > 1, 0, 1),
         followup_toggle = ifelse(ba_followup/age_followup > 1, 0, 1),)

ggplot(df) + 
  geom_point(aes (x = age_baseline , y = ba_baseline, color = baseline_toggle) + 
  geom_point (aes (x = age_followup, y = ba_followup, colour = followup_toggle )) + 
  xlab("Age") + 
  ylab ("BA") +
  geom_abline(intercept=0 , slope = 1 , linetype ="dashed", color="black")