2015-02-23 3 views
5

Я пытаюсь построить точки, используя заполненные фигуры из позиции 21 фигур.Цвета, потерянные в легенде при использовании scale_shape_manual

d <- data.frame(expand.grid(a=letters[1:4], 
     b=factor(1:2)), y=rnorm(8),x=rnorm(8)) 

Это работает очень хорошо:

ggplot(d, aes(x=x, y=y,fill=a,color=a)) + 
     geom_point(aes(shape=b,fill=a),size=4) + 
     scale_shape_manual(values=c(21,22)) 

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

ggplot(d, aes(x=x, y=y,fill=a,color=a)) + 
    geom_point(aes(shape=b,fill=a),color="black",size=4) + 
    scale_shape_manual(values=c(21,22)) 

Это работает внутри участка. Тем не менее, цвета в легендах настроены на черный.

Как получить легенду, как указано выше?

+0

делает эту помощь? http://stackoverflow.com/questions/27221011/fill-scale-is-not-shown-in-the-legend/27224440#27224440 –

ответ

6

По какой-то причине легенда заполнения по умолчанию имеет форму символа 1 (сплошной круг), поэтому он показывает цвет, а не эстетику заполнения. Добавьте это к команде ggplot:

+ guides(fill=guide_legend(override.aes=list(shape=21))) 

enter image description here

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