R ggplot2-两个数据集图例问题的带线和点的图形

R ggplot2-两个数据集图例问题的带线和点的图形,r,ggplot2,graphing,R,Ggplot2,Graphing,我正在用ggplot绘制两个数据集。一个应该是直线,另一个应该是点。我可以按如下方式使其工作: d1 <- filter(d, variable==lineVar) d2 <- filter(d, variable==dotVar) g <- ggplot(d1, aes(clarity, x=xv, y=yv)) g <- g + geom_line(aes(colour=variable)) g <- g + ggtitle(title) g <- g +

我正在用ggplot绘制两个数据集。一个应该是直线,另一个应该是点。我可以按如下方式使其工作:

d1 <- filter(d, variable==lineVar)
d2 <- filter(d, variable==dotVar)
g <- ggplot(d1, aes(clarity, x=xv, y=yv))
g <- g + geom_line(aes(colour=variable))
g <- g + ggtitle(title)
g <- g + xlab(xl)
g <- g + ylab(yl)
g <- g + geom_point(data=d2, size=4, aes(colour=variable))

d1您可以使用
override.aes
更改图例,而无需更改绘图。您没有提供示例数据,因此我使用内置的
mtcars
数据框进行说明。代码的关键行以
指南开始
shape=c(16,NA)
通过将图例的颜色设置为
NA
来去除其中一个点标记
linetype=c(0,1)
通过将另一个图例的线型设置为
0
来删除该图例的线条。此外,不需要在每行代码之后保存绘图。只需在每一行中添加一个
+
,并将它们串在一条语句中,如下例所示

library(reshape2)
library(ggplot2)

mtcars$mpg.line = mtcars$mpg
mtcars.m = melt(mtcars[,c("mpg","mpg.line","wt")], id.var="wt")
mtcars.m$variable = factor(mtcars.m$variable)

ggplot() +
  geom_line(data=mtcars.m[mtcars.m$variable=="mpg.line",],
             aes(wt, value, colour=variable), lwd=1) +
  geom_point(data=mtcars.m[mtcars.m$variable=="mpg",],
             aes(wt, value, colour=variable), size=3) +
  guides(colour=guide_legend(override.aes=list(shape=c(16,NA), linetype=c(0,1)))) +
  theme_grey(base_size=15)