问题描述
我试图基于具有相同线型的标准1创建多条平滑线,并根据标准2为每条线分配不同的颜色。我研究了各种类似的问题(例如this,this, this)在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
指向这些点的颜色正确且线型单一。但是,行数和颜色是错误的。我希望线条具有基于“ cyl”值的红色,蓝色或绿色。
方法二: 我尝试的第二种方法是给我正确的行数和颜色,但是每行的线型都不同。
p <- ggplot(mtcars,colour = as.factor(cyl),linetype = as.factor(carb))) +
geom_point() +
geom_smooth( method ="lm",alpha = .15)
p
p <- ggplot(mtcars,group = as.factor(carb),linetype = "dashed")) +
geom_point() +
geom_smooth( method ="lm",alpha = .15)
p
简而言之,方法二使我最接近目标。现在,如何在方法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))))
输出: