gpt4 book ai didi

R,ggplot2 - 在图例中,如何在一个几何图形中隐藏未使用的颜色,同时在其他几何图形中显示它们?

转载 作者:行者123 更新时间:2023-12-01 18:04:41 25 4
gpt4 key购买 nike

我正在制作一个为 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))

ggplot with points

我想通过使用 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)

ggplot with points and rectangle

我想去掉图例中“b”和“c”项周围的轮廓,因为它们没有被绘制出来。我不知道该怎么做,因为它们是由与点相同的颜色美学定义的。理想情况下,这些未使用的因素应该从轮廓颜色的图例中删除,因为它们在仅显示一个 geom_ 时是正确的,但这似乎不是它的工作方式。 (并且在 aes() 调用之外手动定义颜色意味着它不会显示在 id="a" 的图例中。)

虽然我可能忽略了一些东西,但大量搜索还没有得到答案。从图例中隐藏一个 geom_ 的未使用颜色同时为其他人保留它们的最佳方法是什么? (或者:我应该将它们分成两个图例吗​​?如何?)

最佳答案

我通常使用 guide_legend() 中的 override.aes 来处理这类事情。在您的情况下,您可以将最后两个图例项的线型设置为 0 (无线)。第一个图例项的线型应为 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) ) ) )

enter image description here

关于R,ggplot2 - 在图例中,如何在一个几何图形中隐藏未使用的颜色,同时在其他几何图形中显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com