Использование scale_shape_manual скрывает мою линию регрессии?

#r #ggplot2

#r #ggplot2

Вопрос:

В настоящее время я работаю над графиком корреляции, где я хочу включить как корреляцию (включая затенение для доверительного интервала), так и для каждой точки данных. Используя ggplot2 и следующий код, я получаю 16 разных фигур (не мой выбор), по одной для каждой точки данных, но без линии регрессии:

   ggplot(my_data_1500, aes(x = EC50, y = threshold, color = factor(compound), shape = factor(compound)))  
  geom_point(size = 2)  
  scale_shape_manual(values = c(0:15))  
  labs(x = expression(paste(EC[50]," (µM)")))  
  labs(y = expression ("Threshold (µg/kg water)"))  
  theme_classic()  
  theme(axis.title.y = element_text(margin = margin(t = 0, r = 15, b = 0, l = 0), size = 28))  
  theme(axis.title.x = element_text(margin = margin(t = 15, r = 0, b = 0, l = 0), size = 28))  
  theme(axis.text = element_text(size = 24))  
  geom_smooth(colour = "black", method = lm)
  

Цветные фигуры:
введите описание изображения здесь

Если я изменю код, удалив аргументы цвета и формы из ggplot(), я получу линию и точки, но последние идентичны:

   ggplot(my_data_1500, aes(x = EC50, y = threshold))  
  geom_point(size = 2)  
  scale_shape_manual(values = c(0:15))  
  labs(x = expression(paste(EC[50]," (µM)")))  
  labs(y = expression ("Threshold (µg/kg water)"))  
  theme_classic()  
  theme(axis.title.y = element_text(margin = margin(t = 0, r = 15, b = 0, l = 0), size = 28))  
  theme(axis.title.x = element_text(margin = margin(t = 15, r = 0, b = 0, l = 0), size = 28))  
  theme(axis.text = element_text(size = 24))  
  geom_smooth(colour = "black", method = lm)
  

Просто строка:
введите описание изображения здесь

Мне удалось создать другую фигуру с помощью geom_text_repel (ggrepel), где я заменил точки цифрами, что отлично сработало.

У кого-нибудь есть идея, как я могу отобразить как линию, так и фигуры? Я предполагаю, что это может быть проблема со слоями, но не могу понять это. Заранее спасибо!

Комментарии:

1. Если вы хотите, чтобы эстетика влияла только на один слой, вы можете перейти aes() к этому слою вместо того, чтобы помещать его в глобальный ggplot() . Например, если вам нужны цвета и формы для точек, но одна общая линия регрессии, которую вы могли бы поместить aes(color = compound, shape = compound) в geom_point() слой.

2. Перемещение aes() как в geom_point(), так и в geom_smooth() сделало свое дело, спасибо за совет!