r - ggplot2中的单独图例geom_smooth

标签 r 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))

enter image description here

关于r - ggplot2中的单独图例geom_smooth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608863/

相关文章:

r - 绘制事件序列/事件序列聚类

c++ - 将数组发送到 R 函数 (C++)

R - 匹配不同开始和结束条件的子集行

r - 用重复点绘制数据

r - 如何使用 geom_text 在堆叠条形图的比例尺上添加频率或数字?

r - 不使用apply函数对data.table的每一行进行操作的方法

data.table join 中的 Rcpp 函数

r - 使用scale_color_gradientn时,ggplot2图例条目从posixct更改为整数

r - 独立于行构面的数量来控制ggplot2构面的高度

r - 使 ggplot 完全适合视口(viewport)大小