r - 图例中的线型变形
问题描述
我有一个图表显示了某些函数随时间的内存使用情况,用于两个不同版本的函数。现在,对于每个版本,我都添加了一条虚线回归线。所以我添加了一个图例(带有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")
这是整个情节的样子:
解决方案
问题源于两者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")
推荐阅读
- c# - 如何正确定义 EF Core 创建的这些类之间的关系?
- python-3.x - 在 Python 3 上将不同类型的信息写入 2 个不同的日志文件?
- java - 带有打包依赖项的 Maven 构建 jar
- docker - docker-compose.yml 中另一个变量中的用户变量如何
- php - 获取每张图片的具体记录
- r - 计算单词的长度并切割低于阈值的行
- java - 战舰游戏的 2D 阵列中的船舶重叠问题,Java
- javascript - show/hide div using javascript
- ios - SSL Error occurs in URL Session data task call back in certain devices only
- javascript - Typescript check if promise body does not call `resolve`