2014-09-24 3 views
0

Я очень новичок в R и попытался найти ответ на свой вопрос, но не смог найти то, что искал (или просто не мог понять используйте правильные ключевые слова для включения!). Я думаю, что это довольно распространенная задача в R, но я просто очень новый.Раскраска диаграммы рассеивания в R на основе обогащения фоном

У меня есть диаграмма рассеяния x vs y, и я хочу покрасить те точки, для которых есть хотя бы 2-кратное обогащение, т. Е. Где x/y> = 2. Поскольку мои значения выражаются как значения log2, преобразованное значение должно быть x/y> = 4.

Я в настоящее время имеет график с рассеиванием

plot(log2(counts[,40], log2(counts[,41)) 

где отсчетами являются .csv импортированы файлами и 40 & 41 мои столбцы заинтересованы.

Я также создал столбец для кратных изменений с помощью

counts$fold<-counts[,41]/counts[,40] 

Я не знаю, как включить эти две части информации ... В конце концов я хочу график, который выглядит как пример здесь : http://s17.postimg.org/s3k1w8r7j/error_messsage_1.png , где те точки, которые по крайней мере в два раза обогащены, будут окрашены в синий цвет.

Любая помощь была бы принята с благодарностью. Благодаря!

+1

Для дальнейшего использования, вы, скорее всего, чтобы получить помощь, напрямую с учетом вашей проблемы, если вы предоставляете [воспроизводимый пример] (http://stackoverflow.com/ вопросы/5963269/пример практического примера), особенно образец ваших данных, код, который вы пробовали до сих пор, и результаты, которые вы пытаетесь достичь. – eipi10

ответ

2

Это то, что вы ищете:

# Fake data 
dat = data.frame(x=runif(100,0,50), y = rnorm(100, 10, 2)) 

plot(dat$x, dat$y, col=ifelse(dat$x/dat$y > 4, "blue", "red"), pch=16) 

ifelse оператор создает вектор «синий» и «красный» (или любой цвет вы хотите) на основе значений dat$x/dat$y и plot использования чтобы покрасить очки.

This might be helpful, если вы никогда не работали с цветами в R.

enter image description here

Другой вариант заключается в использовании ggplot2 вместо базовой графики. Вот пример:

library(ggplot2) 
ggplot(dat, aes(x,y, colour=cut(x/y, breaks=c(-1000,4,1000), 
           labels=c("<=4",">4")))) + 
    geom_point(size=5) + 
    labs(colour="x/y") 

enter image description here

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