【问题标题】:ggplot2 - Graph with line and dots for two data sets legend issuesggplot2 - 两个数据集图例问题的线和点图
【发布时间】:2015-12-23 21:24:27
【问题描述】:

我正在用 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))

唯一的问题是传说!如您所见,“观察到的”数据集在图例中有一条线 + 点,而实际上它应该只是一个点。而“预测”的反向,它应该只是一条线。

有什么方法可以获得更清晰/更准确的图例吗?

【问题讨论】:

    标签: r ggplot2 graphing


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

      猜你喜欢
      • 2017-06-21
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多