2013-10-15 11 views
5

Mam zestaw danych, którego użyłem do utworzenia wykresu rozproszenia i chciałbym przypisać trzy różne kolory do punktów danych w trzech różnych regionach, w oparciu o ich x wartości.Używanie warunkowych instrukcji do zmiany koloru punktów danych

Punkty danych z X-wartości < 3 Chcę się pojawiać czerwone

punktów danych z X-wartości (3,1549) Chcę się pojawiać czarne

punktów danych z wartości x> 1549 Chcę wydaje się fioletowy

Oto mój kod dla wykresu rozrzutu i wykonanie dwóch pierwszych parametrów, jak mogę zaimplementować trzeci parametr, aby punkty danych ostatniego regionu były purpurowe?

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

Odpowiedz

6

Wystarczy użyć zagnieżdżone ifelse s:

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

Można zdefiniować wektor kolorów i przekazać je do col argument plot. Coś takiego:

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

To było dla mnie bardzo pomocne. Dziękuję :) – AbhinavVinay

3

podoba mi się podejście cut:

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

Ponadto, "klasyczny" findInterval:

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

+0

To nawet lepiej niż "cut"! Dziękuję za pokaz. – sgibb

Powiązane problemy