r - separate legend geom_smooth in ggplot2 -
i want make plot similar one:
library(ggplot2) ggplot(data=mtcars, aes(x = wt,y = mpg, colour = factor(cyl))) + geom_line() + geom_smooth(method = "lm", se=false, lty = 2)
however, want different entry in legend dashed lines (linear trend) , solid lines (data). seems trivial reason haven't been able figure out.
if need show 6 different levels in 1 legend combines linetypes , colors, 1 solution make new data frame contains original mpg
values , predicted values linear model.
make new data frame mtcars2
mgp
replaced predicted values.
library(plyr) mtcars2<-ddply(mtcars,.(cyl),mutate,mpg=predict(lm(mpg~wt)))
add new column mtcars
, new data frame show real , predicted data
mtcars$type<-"real" mtcars2$type<-"pred"
combine both data frames.
mtcars.new<-rbind(mtcars,mtcars2)
now plot data using combined data frame , color=
, lty=
use interaction between cyl
, type
. scale_color_manual()
, scale_linetype_manual()
change values of colors , linetypes.
ggplot(mtcars.new,aes(x=wt,y=mpg,color=interaction(type,factor(cyl)), lty=interaction(type,factor(cyl))))+ geom_line()+ scale_color_manual("legend",values=c("red","red", "green","green","blue","blue"))+ scale_linetype_manual("legend",values=c(2,1,2,1,2,1))
Comments
Post a Comment