我想制作一个与此非常相似的情节:
library(ggplot2)
ggplot(data=mtcars, aes(x = wt,y = mpg, colour = factor(cyl))) +
geom_line() + geom_smooth(method = "lm", se=FALSE, lty = 2)
但是,我特别想在图例中为虚线(线性趋势)和实线(数据)添加不同的条目。这似乎非常微不足道,但由于某种原因,我无法弄清楚这一点。
答案 0 :(得分:3)
如果您需要在一个组合线型和颜色的图例中显示6个不同的级别,那么一种解决方案是使用线性模型创建包含原始mpg
值和预测值的新数据框。
制作新数据框mtcars2
,其中mgp
替换为预测值。
library(plyr)
mtcars2<-ddply(mtcars,.(cyl),mutate,mpg=predict(lm(mpg~wt)))
向mtcars
和新数据框添加新列以显示实际和预测数据
mtcars$type<-"real"
mtcars2$type<-"pred"
合并两个数据框。
mtcars.new<-rbind(mtcars,mtcars2)
现在使用组合数据框架绘制数据,color=
和lty=
使用cyl
和type
之间的互动。 scale_color_manual()
和scale_linetype_manual()
更改颜色和线型的值。
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))