2014-01-15 2 views
3

Я хотел бы получить доступ к строке по умолчанию или заполнить цвета из ggplot2, и я не уверен, как это сделать. В частности, в приведенном ниже коде вы увидите green4, blue4 и red4 используется в аннотациях. Это мои приближения к тому, что я думаю ggplot2 использует.Использование цветов заливки по умолчанию из графов ggplot2 через аннотацию в R

Кроме того, если этот код не соответствует лучшим методам или может извлечь выгоду из альтернативного метода, проконсультируйтесь с ним.

library(ggplot2) 
ggplot(data.frame(x = c(0, 1000)), aes(x)) + 
    stat_function(fun = dnorm, geom = "density", args = list(mean = 200, sd = 50), 
       aes(color="technology", fill="technology", alpha= 0.75)) + 
    stat_function(fun = dnorm, geom = "density", args = list(mean = 500, sd = 200), 
       aes(color="textiles", fill="textiles", alpha = 0.75)) + 
    stat_function(fun = dnorm, geom = "density", args = list(mean = 750, sd = 100), 
       aes(color="pharmaceuticals", fill="pharmaceuticals", alpha = 0.75)) + 
    labs(list(title="Fictious 'Density' Returns by Industry", x=NULL, y=NULL, color="Industry")) + 
    theme(legend.position="none") + 
    theme(axis.ticks = element_blank(), axis.text.y = element_blank()) + 
    annotate("text", label="technology", x=275, y=0.008, color="green4") + 
    annotate("text", label="textiles", x=500, y=0.0025, color="blue4") + 
    annotate("text", label="pharmaceuticals", x=835, y=0.0045, color="red4") 

ответ

4

ggplot_build Используйте, чтобы увидеть, что произойдет за сценой:

unique(sapply(ggplot_build(p)$data,'[[','colour')) 
    [,1]  [,2]  [,3]  
[1,] "#00BA38" "#619CFF" "#F8766D" 

unique(sapply(ggplot_build(p)$data,'[[','fill')) 
    [,1]  [,2]  [,3]  
[1,] "#00BA38" "#619CFF" "#F8766D" 
+0

Спасибо - Я на самом деле пришлось добавить еще один 'sapply (..., уникальный)', чтобы избежать захвата все 101 элементов каждого . – JasonAizkalns

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