如何使用 R 在散点图中的线条之间添加不同的背景颜色?

How to add different background colors between lines in a scatter plot using R?

我想用R画这样的散点图:

这是一个散点图。上面有三行。在第一行 (x=(3,0), y=(0,2)) 下,我希望背景颜色为浅红色。红色位于第一行和第二行之间 (x=(4,0),y=(0,4))。然后暗红色在第二行和第三行之间(x=(8,0),y=(0,5)).

假设散点数据是:

a=data.frame(x=c(1,2,3,4,5,6,7,8,9,10),
             y=c(1,4,2,6,4,8,2,5,1,7))

我怎样才能做到这一点?

使用 geom_point 作为散点数据,使用 geom_polygon 绘制和填充区域。

geom_polygon连接x-y点,起点和终点相连,内部填充颜色(more details here)

在下面的示例中,所有多边形都从 0,0 开始

pol.3 = data.frame(x=c(0,8,0), y=c(0,0,5))
pol.2 = data.frame(x=c(0,4,0), y=c(0,0,4))
pol.1 = data.frame(x=c(0,3,0), y=c(0,0,2))

ggplot(a) + 
  geom_polygon(data=pol.3, aes(x=x, y=y), fill = "blue") +
  geom_polygon(data=pol.2, aes(x=x, y=y), fill = "green") +
  geom_polygon(data=pol.1, aes(x=x, y=y), fill = "red") + 
  geom_point(aes(x=x, y=y)) 

如果您不希望多边形重叠,请使用以下数据

pol.3 = data.frame(x=c(4,8,0,0), y=c(0,0,5,4))
pol.2 = data.frame(x=c(3,4,0, 0), y=c(0,0,4,2))
pol.1 = data.frame(x=c(0,3,0), y=c(0,0,2))

结果将相同但没有重叠,因此您可以使用 alpha 调整填充颜色