我想制作一个非常类似于这个的情节:
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 值和线性模型预测值的新数据框 .
mpg
创建新数据框 mtcars2 ,其中 mgp 被替换为预测值 .
mtcars2
mgp
library(plyr) mtcars2<-ddply(mtcars,.(cyl),mutate,mpg=predict(lm(mpg~wt)))
将新列添加到 mtcars 和新数据框以显示实际和预测数据
mtcars
mtcars$type<-"real" mtcars2$type<-"pred"
合并两个数据帧 .
mtcars.new<-rbind(mtcars,mtcars2)
现在使用组合数据框绘制数据,并且 color= 和 lty= 使用 cyl 和 type 之间的交互 . 使用 scale_color_manual() 和 scale_linetype_manual() 更改颜色和线型的值 .
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))
1 回答
如果您需要在一个组合线型和颜色的图例中显示6个不同的级别,那么一种解决方案是创建包含原始
mpg
值和线性模型预测值的新数据框 .创建新数据框
mtcars2
,其中mgp
被替换为预测值 .将新列添加到
mtcars
和新数据框以显示实际和预测数据合并两个数据帧 .
现在使用组合数据框绘制数据,并且
color=
和lty=
使用cyl
和type
之间的交互 . 使用scale_color_manual()
和scale_linetype_manual()
更改颜色和线型的值 .