使用geom_smooth从多个条件创建多行?

问题描述

我试图基于具有相同线型的标准1创建多条平滑线,并根据标准2为每条线分配不同的颜色。我研究了各种类似的问题(例如thisthisthis)在stackoverflow中,但是它们都使用单个条件而不是两个条件。我尝试了不同的方法,但没有得到完整的结果。不同的方法及其结果如下:

方法I:

data(mtcars)
p <- ggplot(mtcars,aes(mpg,hp,colour = as.factor(cyl))) +
  geom_point() + 
  geom_smooth( aes(group = as.factor(carb)),method ="lm",se = F,fullrange = T,alpha = .15,linetype = "dashed") 
p

结果是:

enter image description here

指向这些点的颜色正确且线型单一。但是,行数和颜色是错误的。我希望线条具有基于“ cyl”值的红色,蓝色或绿色。

方法二: 我尝试的第二种方法是给我正确的行数和颜色,但是每行的线型都不同。

p <- ggplot(mtcars,colour = as.factor(cyl),linetype = as.factor(carb))) +
  geom_point() + 
  geom_smooth( method ="lm",alpha = .15) 
p

enter image description here

方法三: 在方法III中,结果类似于方法I。

p <- ggplot(mtcars,group = as.factor(carb),linetype = "dashed")) +
  geom_point() + 
  geom_smooth( method ="lm",alpha = .15) 
p

enter image description here

简而言之,方法二使我最接近目标。现在,如何在方法II中获得单个线型?

在此先感谢您的帮助!

解决方法

我建议采用下一种方法,设置线型格式:

library(ggplot2)
#Data
data(mtcars)
#Plot
p <- ggplot(mtcars,aes(mpg,hp,colour = as.factor(cyl),linetype = as.factor(carb))) +
  geom_point() + 
  geom_smooth( method ="lm",se = F,fullrange = T,alpha = .15) 
p + scale_linetype_manual(values = rep('solid',length(unique(mtcars$carb))))

输出:

enter image description here