我想制作一个与此非常相似的情节:
library(ggplot2)
ggplot(data=mtcars, aes(x = wt,y = mpg, colour = factor(cyl))) +
geom_line() + geom_smooth(method = "lm", se=FALSE, lty = 2)
但是,我特别希望在图例中为虚线(线性趋势)和实线(数据)使用不同的条目。这看起来很微不足道,但由于某种原因我一直无法弄清楚。
最佳答案
如果您需要在一个结合线型和颜色的图例中显示 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))
关于r - ggplot2中的单独图例geom_smooth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608863/