Есть несколько способов выбора определенных c цветов для дискретной и градиентной шкал в ggplot2
, в основном сосредоточенных на использовании здесь функций scale_color_...
и scale_fill_...
аналогично тому, как вы использовали scale_shape_manual()
.
Поскольку вы ищете оттенки серого, вероятно, наиболее просто выбрать эти шкалы автоматически с помощью вспомогательных функций scale_color_grey()
и scale_fill_grey()
.
Наконец, по порядку чтобы ggplot2
выбирал цвет каждой линии, вам необходимо создать для этого легенду и поместить color=
aestheti c в aes()
. У вас было col=
(другой способ указать color=
) за пределами aes()
для stat_smooth()
, поэтому все линии были нарисованы этим цветом. Я считаю, что это то, что вы хотите сделать:
ggplot(mtcars, aes(y=wt, x=mpg, shape=factor(cyl))) +
stat_smooth(method=loess, size = 1, aes(color=factor(cyl))) +
geom_point(aes(fill = factor(cyl)), size = 4) +
scale_shape_manual(values=c(16,22, 1)) +
scale_color_grey() + scale_fill_grey()
Вы заметите, что трудно увидеть самый светлый цвет линии. Вы можете исправить это, применив немного прозрачности к заливке около geom_smooth()
через alpha=
, а также изменив на theme_bw()
, чтобы фон был белым:
ggplot(mtcars, aes(y=wt, x=mpg, shape=factor(cyl))) + theme_bw() +
stat_smooth(method=loess, size = 1, aes(color=factor(cyl)), alpha=0.18) +
geom_point(aes(fill = factor(cyl)), size = 4) +
scale_shape_manual(values=c(16,22, 1)) +
scale_color_grey() + scale_fill_grey()