Отредактируйте линии stat_smooth И geom_points на том же рисунке - PullRequest
0 голосов
/ 18 июня 2020

У меня есть график с точками из нескольких уровней категориальной переменной и соответствующими линиями сглаживания лёсса для каждого уровня той же переменной. Мне нужно отредактировать ОБЕ точки И линии, чтобы преобразовать цветной график по умолчанию в значимый черно-белый график. Я могу редактировать точки, используя scale_shape_manual, но не линии. Следующий код использует mtcars, чтобы приблизиться к тому, что мне нужно. К сожалению, все селезенки одного цвета (красные). Я подозреваю, что не понимаю, где эти разновидности? Aestheti c? команды должны быть размещены. Любая помощь очень ценится.

c <- ggplot(mtcars, aes(y=wt, x=mpg, shape=factor(cyl)))
c + 
  stat_smooth(method=loess, size = 1, col="red") + 
  geom_point(aes(fill = factor(cyl)), size = 4) + 
  scale_shape_manual(values=c(16,22, 1))

ggplot, созданный этим кодом

1 Ответ

1 голос
/ 18 июня 2020

Есть несколько способов выбора определенных 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()

enter image description here

Вы заметите, что трудно увидеть самый светлый цвет линии. Вы можете исправить это, применив немного прозрачности к заливке около 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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...