R 图例中的线型失真

R 图例中的线型失真,r,ggplot2,R,Ggplot2,我有一个曲线图,它显示了函数的两个不同版本随时间的内存使用情况。现在,对于每个版本,我都添加了一条虚线回归线。因此,我添加了一个图例(带有比例\线型\手册),说明实线表示实际测量值,虚线表示回归线。然而,图例中的虚线有问题,我无法找出原因: 当我用虚线代替虚线作为回归线时,问题就更清楚了。图例中不应出现那些较小的额外点: 以下是我的R脚本的相关部分: ggplot(df, aes(x = x, y = heapUsage, color=Version)) + geom_line(aes(

我有一个曲线图,它显示了函数的两个不同版本随时间的内存使用情况。现在,对于每个版本,我都添加了一条虚线回归线。因此,我添加了一个图例(带有
比例\线型\手册
),说明实线表示实际测量值,虚线表示回归线。然而,图例中的虚线有问题,我无法找出原因:

当我用虚线代替虚线作为回归线时,问题就更清楚了。图例中不应出现那些较小的额外点:

以下是我的R脚本的相关部分:

ggplot(df, aes(x = x, y = heapUsage, color=Version)) +
  geom_line(aes(lty="data")) +
  geom_smooth(method='lm', se=TRUE, aes(lty="trend")) +
  scale_linetype_manual("Data", values=c("solid", "dotted"), breaks=c("data", "trend"), labels=c(" Measured  ", " Regression line")) +
  theme_bw() +
  theme(legend.position = "top") +
  guides(color=guide_legend(override.aes=list(fill=NA))) +
  guides(linetype=guide_legend(override.aes=list(fill=NA, color="black"))) +
  labs(x = "# Executed Operations") +
  labs(y = "Heap Usage in MB")
下面是整个情节的样子:


问题产生于
geom_line
geom_smooth
绘制叠加的图例

通过添加
show.legend=FALSE
,可以关闭
geom_smooth
的图例。以下是一个基于
mtcars
的可复制示例。如果省略
show.legend=FALSE
(或设置
show.legend=TRUE
),您将看到图例中黑色和蓝色线条的叠加效果

mtcars %>%
    select(mpg, disp, qsec) %>%
    gather(k, v, -mpg) %>%
    ggplot(aes(mpg, v, linetype = k)) +
    geom_smooth(method = "lm", se = T, show.legend = F) + 
    geom_line() +
    scale_linetype_manual("Data", values=c("solid", "dotted")) +
    theme_bw() +
    theme(legend.position = "top")