R 突出显示绘图中的几个点

R 突出显示绘图中的几个点,r,plot,R,Plot,我试图用几个位置(点)来绘制以下数据 plot(b$pos,b$log_p,col==ifelse(b$pos==c(14824849,13920386,14837470),90,100), pch=19, xlab='Chromosome 21 position', ylab='-log10(p)') 生成的绘图仅显示一个红色突出显示的点,并显示以下警告消息: In b$pos == c(14824849, 13920386,14837470) : longer object length

我试图用几个位置(点)来绘制以下数据

plot(b$pos,b$log_p,col==ifelse(b$pos==c(14824849,13920386,14837470),90,100), pch=19, xlab='Chromosome 21 position', ylab='-log10(p)')
生成的绘图仅显示一个红色突出显示的点,并显示以下警告消息:

In b$pos == c(14824849, 13920386,14837470) : longer object length is not a multiple of shorter object length

好的,问题很可能是你在ifelse中的情况。如果在ifelse()之外尝试条件(
b$pos==c(14824848491392038614837470)
),您将收到一条错误消息,内容如下:

较长的对象长度不是较短对象长度的倍数

如果将条件更改为:

b$pos%在%c中(148248491392038614837470)

您将得到一个真/假值向量,确定b$pos中的每个条目是否存在于向量(148248491392038614837470)中,而不是b$pos中的条目是否等于c(148248491392038614837470)

[1]假假假假假假假假

现在这个数据集有10个
x
值,如果您要这样写的话:

plot(x, y, col=ifelse(x == c(1, 7), 'red', 'blue'))
这将正常工作,x值将与1和7交替比较,例如:

49 == 1 ?
7 == 7 ?
66 == 1?
51 == 7? .... etc etc.

错误消息说,您的向量长度3没有完全进入b$pos的长度。

tidyverse
ggplot
中,您可以尝试

library(tidyverse)
tibble(x = c(49, 7, 66, 51, 43, 70, 35, 53, 6, 29),
y = c(10, 98, 44, 31, 37, 14, 64, 84,  4, 34),
gr=x %in% c(6, 7)) %>% 
  ggplot(aes(x,y, col=gr)) + 
   geom_point(size=2) + 
   ggalt::geom_encircle(data= . %>% filter(gr), color="green", s_shape=0) +
   theme_bw()


使用
ggalt::geom_enclude
函数,您可以围绕感兴趣的点画一个圆圈

您是否试图突出显示位置在c(148248491392038614837470)和90100中?是的,位置是c(148248491392038614837470),而90和100是点的颜色。
49 == 1 ?
7 == 7 ?
66 == 1?
51 == 7? .... etc etc.
library(tidyverse)
tibble(x = c(49, 7, 66, 51, 43, 70, 35, 53, 6, 29),
y = c(10, 98, 44, 31, 37, 14, 64, 84,  4, 34),
gr=x %in% c(6, 7)) %>% 
  ggplot(aes(x,y, col=gr)) + 
   geom_point(size=2) + 
   ggalt::geom_encircle(data= . %>% filter(gr), color="green", s_shape=0) +
   theme_bw()