使用 4 个坐标作为输入创建 geom_mark_rect 的阴影矩形?

Create shaded rectangle with geom_mark_rect using 4 coordinates as inputs?

如何使用 ggforce rectangle 轻松地用矩形标记由四组 xy 坐标定义的区域?

最小示例

我原以为这会起作用(或至少产生接近的结果)

library(ggplot2)
library(dplyr)
library(ggforce)
set.seed(123)
data.frame(x = runif(20)* 1000, y = runif(20)* 1000) %>% 
  ggplot(aes(x, y)) +
  geom_point() + 
  geom_mark_rect(x = c(500, 750, 500, 750), y = c(250, 250, 500, 500))

但它会在放置位置关闭的地方产生这个:

这个位置的一个矩形是目标(下面的矩形没有阴影,但 ggforce 应该自动阴影):

你还没有把你的 x 和 y 点放在美学调用中 (aes)。实际上,由于 geom_mark_rect 将从对 ggplot 的调用中继承其 aes,您可以只提供 x 和 y 坐标作为数据框。这是一个可重现的例子:

library(ggplot2)
library(dplyr)
library(ggforce)

set.seed(123)
data.frame(x = runif(20) * 1000, y = runif(20) * 1000) %>% 
  ggplot(aes(x, y)) +
  geom_point() +
  geom_mark_rect(data = data.frame(x = c(500, 750, 500, 750), 
                                   y = c(250, 250, 500, 500)), fill = "red")

reprex package (v0.3.0)

于 2020-05-10 创建