r - 在ggplot2中隐藏单个geom的图例
问题描述
我将相同的变量(颜色)映射到两个不同几何图形中的颜色。我希望它们要么出现在单独的图例(DHJ 和 EFI)中,要么最好完全跳过第二个图例(对于 E、F 和 I)。目前,R 将两者混合在一起,并给了我一个按字母顺序列出所有混合在一起的 DEFHIJ 的图例。
基本上,我想将今天的点绘制到一些使用标准数据集的平滑线上。我不希望平滑线有图例 - 我们都熟悉它们,它们是我们所有图表的标准。我只想要一个点的传说。
我已经show.legend = FALSE
按照其他地方的建议进行了尝试,但这似乎没有效果。 guides(color = FALSE)
删除整个图例。
代表:
library(tidyverse)
set1 <- diamonds %>%
filter(color %in% c("D", "H", "J"))
set2 <- diamonds %>%
filter(color %in% c("E", "F", "I"))
ggplot() +
geom_point(data = set1,
aes(x = x, y = y, color = color)) +
geom_smooth(data = set2,
show.legend = FALSE,
aes(x = x, y = y, color = color))
解决方案
如果您希望图例仅显示来自一个数据集的颜色,您可以通过将breaks
in设置scale_color_discrete()
为这些值来实现。
... +
scale_color_discrete(breaks = unique(set1$color) )
如果您不使用线条的颜色,因为这是标准背景信息,您可以使用group
ingeom_smooth()
而不是color
. (另请参阅linetype
您是否希望能够区分线条。)
ggplot() +
geom_point(data = set1,
aes(x = x, y = y, color = color)) +
geom_smooth(data = set2,
aes(x = x, y = y, group = color))
推荐阅读
- java - 如何重命名由 Lombok 管理的字段
- c++ - 在 C++ 中没有比较器函数的情况下,按对中的第一个元素按递增顺序对对向量进行 stable_sort
- android-studio - 如何在 Android Studio 的 android 模拟器上启用麦克风?
- r - 如何使用 ggplot 和 geom_bar() 在 r 中的条形图上添加 y 轴值?
- python - 如何为 Docker 设置动态值
- angular - 如何修复 Angular 9 应用程序中的 CDK 虚拟滚动。[PokeDex 应用程序]
- php - 使用 ajax 将 Paypal-Buttons(客户端)链接到服务器响应(PHP)
- c - 我需要 C 语言中 CS50 pset1 分配问题(Mario More)的解决方案
- javascript - 克隆对象上的评估更改父对象的值
- android - 向 Mididriver 发送消息以更改乐器并使用特定 bpm 演奏旋律