Как мне раскрасить определенный бар в гистограмме (qplot, ggplot2) - PullRequest
5 голосов
/ 19 марта 2011

Я построил фазовую диаграмму, используя qplot, и использовал опцию «заливка», чтобы покрасить столбцы на основе их значений (высокий = красный, мед = фиолетовый, низкий = синий)

http://i.stack.imgur.com/raEzA.png

Мой код:

x = qplot(as.character(exon),Divergence_from_Average, data=HRA_LR,     
  geom="histogram",fill=abs(Divergence_from_Average)) 
y = x +facet_grid(~probeset_id, scales="free_x", space= "free") + theme_bw() +     
  opts(title="GRP78/HSPA5  (HRN vs LR)") 

Если мне нужно только покрасить полоски выше 0,3 и оставить оставшиеся незаполненными, как я могу это сделать?

Ответы [ 2 ]

8 голосов
/ 19 марта 2011

Вы можете настроить его под свои нужды, но вот основная концепция:

Мы определим новую двоичную переменную, которая определяет, заполнять ли столбики или нет. Мы передадим это в аргумент fill в качестве фактора и используем scale_colour_manual, чтобы дать им нужные нам цвета. Я также передал настройку параметра colour на красный, чтобы вы могли видеть белые полосы на белом фоне.

#Sample data
df <- data.frame(
    divergence = rnorm(10), 
    exons = paste("E", sample(1:20, 10, TRUE), sep = ""), 
    probset_id = sample(letters, 10, FALSE) 
)

#Binary flag for fill
df$fill <- with(df, ifelse(divergence > .3, 1,0))


ggplot(data = df, aes(as.character(exons), divergence, fill = factor(fill))) +
    geom_histogram(colour = "red", legend = FALSE) +
    scale_fill_manual(values = c("1" = "red", "0" = "white"), legend = FALSE) +
    facet_grid(~ probset_id, scales="free_x", space= "free") +
    theme_bw() + opts(title="GRP78/HSPA5  (HRN vs LR)")

Будет генерировать что-то вроде этого. Я забыл set.seed() перед сохранением изображения, чтобы ваши мили могли отличаться, но посчитайте это доказательством концепции:

enter image description here

1 голос
/ 19 марта 2011

Вот пример с данными подсказок в ggplot2

library(ggplot2)
data(tips)
qplot(day, data = tips, geom = 'blank') +  geom_bar(aes(fill = ..count.. > 65))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...