在剧情中突出显示几点

时间:2015-09-25 10:20:10

标签: 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 is not a multiple of shorter object length

2 个答案:

答案 0 :(得分:2)

好的,这个问题可能是你在ifelse的条件。如果您在ifelse()之外尝试条件(b$pos==c(14824849,13920386,14837470)),您将收到以下错误消息:

  

较长的物体长度不是较短物体长度的倍数

如果您将条件更改为:

b$pos %in% c(14824849,13920386,14837470)

您将获得一个TRUE / FALSE值的向量,用于确定b $ pos中的每个条目是否存在于向量中(14824849,13920386,14837470),而不是b $ pos中的条目是否等于c(14824849,13920386) ,14837470)。

x = c(49, 7, 66, 51, 43, 70, 35, 53, 6, 29)
y = c(10, 98, 44, 31, 37, 14, 64, 84,  4, 34)
x %in% c(6, 7)
  

[1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE

plot(x, y, col=ifelse(x %in% c(6, 7), 'red', 'blue'))
  

enter image description here

现在这个数据集有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的长度。

答案 1 :(得分:0)

tidyverseggplot中,您可以尝试

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()

enter image description here

使用ggalt::geom_encircle功能,您可以在兴趣点周围画一个圆。