2016-11-07 3 views
1

У меня есть образец dataframe:цвет текст в фаске легенды цвета в R ggplot2

dput (данные)

structure(list(DAF = c(0.00704225, 0.00352113, 0.00352113, 0.028169, 
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113, 
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845, 
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113, 
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113, 
0.00704225, 0.00352113, 0.00704225, 0.00352113, 0.00352113, 0.028169, 
0.00352113, 0.00704225, 0.0105634, 0.00352113, 0.0105634, 0.00352113, 
0.00352113, 0.00352113, 0.0176056, 0.0140845, 0.00352113, 0.0140845, 
0.00352113, 0.0105634, 0.00352113, 0.00352113, 0.0140845, 0.00352113, 
0.084507, 0.00352113, 0.0669014, 0.00704225, 0.00352113, 0.00352113, 
0.00704225, 0.00352113), TYPE = structure(c(2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("All SVs", "bDEL"), class = "factor"), 
Function = structure(c(2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 2L, 2L, 1L), .Label = c("Genic", "Intergenic" 
), class = "factor")), .Names = c("DAF", "TYPE", "Function" 
), class = "data.frame", row.names = c(NA, -60L)) 

Я построен с использованием»

p1<-ggplot(sv,aes(x=DAF,y=..density..,fill=Function))+geom_histogram(position="dodge",binwidth=0.02)+facet_wrap(~ TYPE, scales = "free",ncol=2) 

аннотированный текст из дата-карта:

> dput(dat) 
structure(list(x = c(0.05, 0.05, 0.05, 0.05, 0.05, 0.05), y = c(20L, 
17L, 14L, 35L, 30L, 25L), labs = structure(c(3L, 4L, 6L, 1L, 
2L, 5L), .Label = c("mean=0.0173", "mean=0.0190", "mean=0.0415", 
"mean=0.0440", "p=0.0393", "p=1.47e-08"), class = "factor"), 
    TYPE = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("All SVs", 
    "bDEL"), class = "factor")), .Names = c("x", "y", "labs", 
"TYPE"), class = "data.frame", row.names = c(NA, -6L)) 


p2<-p1+geom_text(aes(x, y, label=labs),size=1,data=dat,inherit.aes = F) 

который дает следующий сюжет:

enter image description here

Однако, я должен был бы цвет текста «означают = ...» внутри каждой грани по соответствующим цветом легенды. т.е. в фасете Все SV, «среднее значение = 0,0415» должно быть в «Геническом» цвете и «среднее значение = 0,0440» в цвете «Интергенический».

+1

Откуда вы знаете, какое значение получает цвет функции, если он не находится в 'dat'? –

ответ

2

Вам нужно будет добавить столбец в «dat» для представления какой группы каждая строка/этикетка должна быть. Я использовал NA для р-значения.

dat$Function = c("Genic", "Intergenic", NA, "Genic", "Intergenic", NA) 

Затем вы можете отобразить эту переменную color в geom_text. вы можете избежать добавления NA к легенде, используя show.legend = FALSE.

p1 + geom_text(aes(x, y, label = labs, color = Function), 
       size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE) 

Значение по умолчанию NA: grey50, которое вы можете изменить на что-то еще, если необходимо, в scale_color_discrete.

p1 + geom_text(aes(x, y, label = labs, color = Function), 
       size = 1, data = dat, inherit.aes = FALSE, show.legend = FALSE) + 
    scale_color_discrete(na.value = "black") 
+0

это работает !! 1. Могу ли я изменить ширину полосы, удерживая заголовки «Все SV» и «bDEL». Я попробовал 'strip.background = element_rect (size = 0.5)', который не имеет никакого эффекта !! 2. COOLd добавьте заголовки на каждый аспект, например a, b, c, d ..., что нормально делать с помощью ggtitle() – chas

+0

@chas Я думаю, что ширина полосы всегда будет такой же широкой, как и сюжет, хотя вы можете изменить обоснование заголовки и/или удалить фон полосы вместе с помощью некоторых аргументов 'theme'. Вы можете добавлять/изменять заголовки с помощью' labeller' в 'facet_wrap' или путем изменения уровней фактора, используемого в качестве переменной фасета. – aosmith

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