我有一个图表,显示了该函数的两个不同版本随时间推移某个函数的内存使用情况。现在,对于每个版本,我都添加了虚线虚线。因此,我添加了一个图例(带有scale_linetype_manual
),以阐明实线表示实际测量值,虚线表示回归线。但是,图例中的虚线有问题,我无法确定是什么原因造成的:
当我对回归线使用虚线而不是虚线时,问题更加明显。那些较小的多余点不应出现在图例中:
这是我的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")
这是整个情节的样子:
答案 0 :(得分:3)
此问题源于geom_line
和geom_smooth
绘制的图例被覆盖。
您可以通过添加geom_smooth
来关闭show.legend = FALSE
的图例。这是一个基于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")