Кодирование трех условий на точечной диаграмме в ggplot2

Я хотел бы сделать точечную диаграмму ggplot2 (geom_point), где точки кодируют три разные характеристики. Поэтому я подумал об использовании shape, colour и fill (используя фигуры с 21 по 25, которые можно заполнить). Хотя сам график выглядит нормально, легенда не показывает цвета заливки (все точки отображаются черными). Вот MWE, обратите внимание на черные символы carb:

p <- ggplot(mtcars, aes(wt, mpg, shape = factor(gear),
                    fill = factor(carb), colour = factor(cyl)))
p + geom_point(size = 3) + scale_shape_manual(values = 21:25)

Есть ли способ изменить легенду fill, чтобы она отображала настоящие цвета?


person AnjaM    schedule 10.05.2014    source источник
comment
Я не уверен, но я не думаю, что вы можете сопоставить color и fill с разными переменными в geom_point. Вы не должны в любом случае.   -  person Roland    schedule 10.05.2014
comment
@Roland Само отображение работает (как в MWE), просто легенда не работает. И да, мне нужно закодировать (по крайней мере) три функции на одном графике, это будет не диаграмма со значащими числами, а просто изображение, показывающее план эксперимента, подобное этому: r-bloggers.com/plotting-microtiter-plate-maps. Однако, если у вас есть какие-либо предложения о том, как еще закодировать третью функцию, я был бы рад узнать.   -  person AnjaM    schedule 10.05.2014
comment
ggplot(mtcars, aes(wt, mpg, shape = factor(gear), colour = factor(carb))) + geom_point(size = 3) + facet_grid(.~cyl) будет лучшим сюжетом.   -  person Roland    schedule 10.05.2014
comment
@Roland Пожалуйста, посмотрите на предоставленную веб-ссылку. Еще раз: я не собираюсь рисовать осмысленные цифры, а только дизайн тарелки. Планшет для микротитрования нельзя фацетировать.   -  person AnjaM    schedule 10.05.2014


Ответы (1)


Я думаю, что это работает, изменив форму в легенде заливки на 21:

p + geom_point(size = 3) + 
    scale_shape_manual(values = 21:25)+
      scale_fill_discrete(guide=guide_legend(override.aes=list(shape=21)))
person Ben Bolker    schedule 10.05.2014
comment
Большое спасибо, выглядит идеально! Знаете ли вы, можно ли сделать цветные линии вокруг точек толще, чтобы они стали более заметными на графике? - person AnjaM; 10.05.2014
comment
Я как раз собирался это предложить. Думаю, поможет настройка ширины линии (lwd). - person Ben Bolker; 10.05.2014
comment
К сожалению, установка lwd в geom_point ничего не делает. - person AnjaM; 10.05.2014
comment
Кажется, это ответ на историю lwd: stackoverflow.com/questions/17677687/ Спасибо за помощь! - person AnjaM; 10.05.2014