繁体   English   中英

ggplot2中的单独图例geom_smooth

[英]separate legend geom_smooth in ggplot2

我想绘制一个与此图非常相似的图:

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=使用cyltype之间的相互作用。 使用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))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM