R 在点图上绘制圆圈,以标记ggplot2中的最佳区域

R 在点图上绘制圆圈,以标记ggplot2中的最佳区域,r,ggplot2,scatter-plot,R,Ggplot2,Scatter Plot,我有一个具有x和y属性的发电厂的点图。最好的发电厂是x和y都很高的发电厂。现在,我想想象一下,对于发电厂来说,我的地块中哪些区域是可取的,哪些区域是不可取的 我需要制作的是这样的东西: 有什么想法吗?我尝试用geom_point绘制巨大的圆点,但它们的大小取决于我的绘图的导出分辨率。我也尝试绘制类似于ggplot的圆,但如果部分圆落在实际绘图之外,则无法正确绘制圆。使用@joran的圆函数时,这似乎可行: # prepare data for circles green <- circl

我有一个具有x和y属性的发电厂的点图。最好的发电厂是x和y都很高的发电厂。现在,我想想象一下,对于发电厂来说,我的地块中哪些区域是可取的,哪些区域是不可取的

我需要制作的是这样的东西:


有什么想法吗?我尝试用geom_point绘制巨大的圆点,但它们的大小取决于我的绘图的导出分辨率。我也尝试绘制类似于ggplot的圆,但如果部分圆落在实际绘图之外,则无法正确绘制圆。

使用@joran的圆函数时,这似乎可行:

# prepare data for circles
green <- circleFun(center = c(5, 5), diameter = 1.5, npoints = 100)
yellow <- circleFun(center = c(5, 5), diameter = 3, npoints = 100)
orange <- circleFun(center = c(5, 5), diameter = 4.5, npoints = 100)
red <- circleFun(center = c(5, 5), diameter = 6, npoints = 100)

dat <- rbind(green, yellow, orange, red)

# specify levels to get the order of colours right,
# and set the plotting order from large (red) to small (green) circle
dat$fill <- factor(rep(c("green", "yellow", "orange", "red"), each = 100),
                   levels = rev(c("green", "yellow", "orange", "red")))

# dummy data for points
dat2 <- data.frame(x = rnorm(100, mean = 3), y = rnorm(100, mean = 3))

ggplot(data = dat, aes(x = x, y = y)) +
  geom_polygon(aes(fill = fill)) +
  geom_point(data = dat2, aes(x = x, y = y)) +
  coord_cartesian(xlim = c(0, 5), ylim = c(0, 5)) + 
  scale_fill_manual(values = rev(c("green", "yellow", "orange", "red")))
#准备圆的数据

格林:非常感谢。我试过类似的方法,但就是没能成功,很高兴能帮上忙!是的,我尝试了一些不同的方法,但整个设置似乎有点不稳定。例如,当我尝试
scale\u fill\u identity()
dat
中使用fill变量时,圆圈扭曲了。还有我在回答中提到的奇怪的传说。好吧,好吧,希望这对你来说足够好!