我正在制作一个为 a 定义颜色的图,geom_point()
一切看起来都很好。
points_a <- data.frame(x = sample(1:10, 4), y = sample(50:60, 4), id = "a")
points_b <- data.frame(x = sample(1:100, 4), y = sample(1:100, 4), id = "b")
points_c <- data.frame(x = sample(1:100, 4), y = sample(1:100, 4), id = "c")
points_all <- rbind(points_a, points_b, points_c)
ggplot(points_all) + geom_point(aes(x, y, color=id))
Run Code Online (Sandbox Code Playgroud)
我想通过使用 围绕它们绘制一个矩形来突出显示一组点,并geom_rect()
选择图表中已使用的相同颜色。根据需要,图例在键中的项目周围添加边框;不幸的是,它还为图例中的每个其他项目添加了边框,如下所示:
my_box <- data.frame(left = 1, right = 10, bottom = 50, top = 60, id = "a")
ggplot(points_all) +
geom_point(aes(x, y, color=id)) +
geom_rect(data = my_box,
aes(xmin=left, xmax=right, ymin=bottom, ymax=top, color = id),
fill = NA, alpha = 1)
Run Code Online (Sandbox Code Playgroud)
我想去掉图例中项目“b”和“c”周围的轮廓,因为它们没有被绘制。我不知道该怎么做,因为它们是由与点相同的颜色美学定义的。理想情况下,这些未使用的因素应该从轮廓颜色的图例中删除,因为它们在只显示一个 时理应如此geom_
,但这似乎不是它的工作原理。(并且在aes()
调用之外手动定义颜色意味着它不会显示在 的图例中id="a"
。)
虽然我可能忽略了一些东西,但很多搜索还没有得到答案。将图例中未使用的颜色隐藏起来geom_
同时保留其他颜色的最佳方法是什么?(或者:我应该将这些分成两个传说,以及如何?)
我通常用override.aes
in处理这类事情guide_legend()
。在您的情况下,您可以将最后两个图例项的线型设置为0
(无线)。第一个图例项应具有 linetype 1
。
ggplot(points_all) +
geom_point(aes(x, y, color=id)) +
geom_rect(data = my_box,
aes(xmin=left, xmax=right, ymin=bottom, ymax=top,
color = id),
fill = NA, alpha = 1) +
guides(color = guide_legend(override.aes = list(linetype = c(1, 0, 0) ) ) )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
222 次 |
最近记录: |