2013-05-15 2 views
0

У меня есть facet_grid участок с 2 geom_hline за участок. Я хотел бы покрасить каждую из этих строк отдельно. Я думал, что если бы я добавил этот цвет к фрейму данных geom_hline, я мог бы поставить цвет внутри aes. Этот цвет по группам, но использует цвета ggplot по умолчанию.Изменить цвет hline по группам: ggplot2

Вот код:

p <- qplot(mpg, factor(sample(c("a", "b", "c", "d"), nrow(mtcars), T)), 
      data=mtcars, facets = vs ~ am) 

hline.data <- data.frame(z = factor(c("a", "b", "c", "d")), 
    vs = c(0,0,1,1), am = c(0,1,0,1)) 

hline.data <- transform(hline.data, z0 = as.numeric(z)) 
hline.data <- rbind.data.frame(hline.data, hline.data) 
hline.data[5:8, 1] <- c("b", "c", "d", "a") 
hline.data[5:8, 4] <- c(2, 3, 4, 1) 
hline.data[, "col"] <- rep(c("red", "black"), each=4) 

p + geom_hline(aes(yintercept = z0, colour=col), hline.data) 

Как я могу получить «красный» и черный geom_hlines я ожидал?

enter image description here

+0

Um .... 'scale_colour_manual (значения = c (" красный "," черный "))'? :) Помните, что это не базовая графика! – joran

+0

О, черт возьми, это момент, я слишком долго отсутствовал от ggplot2. Вы опубликуете ответ. –

ответ

2

Вам просто нужно установить значение масштаба:

+ scale_colour_manual(values = c("black","red")) 
4

Так как вы определяете точные значения в данных (hline.data), вы хотите использовать шкалу идентичности:

+ scale_colour_identity() 
+0

Это, кажется, самый явный +1 Спасибо. –