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

Dav*_*rei 7 graphing r ggplot2

我用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))
Run Code Online (Sandbox Code Playgroud)

输出ggplot2

唯一的问题是传说!正如您所看到的,"观察"数据集在图例中有一个线+点,当它真的应该只是一个点.而对于"预测"反向,它应该只是一条线.

有没有办法获得更清洁/更准确的传奇?

eip*_*i10 5

您可以使用更改图例而不更改绘图override.aes.您没有提供样本数据,因此我使用了内置mtcars数据框进行说明.代码的关键行开头guides.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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述