2013-10-15 1 views
5

У меня есть набор данных, который я использовал для создания диаграммы рассеяния, и я хотел бы присвоить три разных цвета точкам данных в трех разных регионах на основе их х значения.Использование условных выражений для изменения цвета точек данных

точек данных с значениями х < 3 Я хочу, чтобы появиться красные

точек данных с значениями х (3,1549) Я хочу, чтобы появиться черные

точек данных со значениями х> 1549 Я хочу чтобы появиться фиолетовый

Вот мой код для диаграммы рассеяния и выполнения первых двух параметров, как я могу реализовать третий параметр, так что точки данных последнего региона будут фиолетовыми?

plot(x, y, xlab="chr X position (Mb)", 
      ylab="Diversity", 
      pch=16, cex =0.7, 
      col = ifelse(x < 3,'red','black'))  

enter image description here

ответ

6

Просто используйте вложенные ifelse s:

plot(...., col=ifelse(x < 3, "red", ifelse(x > 1549, "purple", "black"))) 
3

Вы можете определить вектор цветов и передать его col аргумент plot. Что-то вроде этого:

colors <- rep("black", length(x)) 
colors[x<3] <- "red" 
colors[x>1549] <- "pink" 

plot(x, y, xlab="chr X position (Mb)", 
      ylab="Diversity", 
      pch=16, cex =0.7, 
      col = colors)  
+0

Это было очень полезно для меня. Спасибо :) – AbhinavVinay

3

Мне нравится cut подход:

set.seed(1) 
x <- sample(1600) 
col <- c("red", "black", "purple") 
col <- col[cut(x, breaks=c(-Inf, 3, 1549, Inf))] 
4

Кроме того, "классический" findInterval:

col = c("red", "black", "purple")[findInterval(x, v = c(0,3,1549))]

+0

Это даже лучше, чем 'cut'! Спасибо за показ. – sgibb

Смежные вопросы