首页 > 解决方案 > ggplot2中给定不同方程线的彩色背景

问题描述

我有一个如下所示的情节:

set.seed(1)
df=data.frame(x=runif(100)*10,y=runif(100)*10)
ggplot(df, aes(x=x, y=y) ) + geom_point() + theme_classic2()+
geom_abline(intercept = 4, slope = 2, color="gray",linetype="dotted")+
geom_abline(intercept = -3, slope = 2, color="gray",linetype="dotted")

我希望根据下图中显示的内容对虚线上方/之间/下方的区域进行分级。我可以尝试什么?

在此处输入图像描述

标签: rggplot2

解决方案


我认为您只需要计算出各个多边形的坐标并将它们放在您的点下:

library(ggplot2)
library(survminer)
#> Warning: package 'survminer' was built under R version 3.6.3
#> Loading required package: ggpubr
#> Loading required package: magrittr

set.seed(1)
df <- data.frame(x = runif(100) * 10, y = runif(100) * 10)
ggplot(df, aes(x = x, y = y)) + 
  geom_polygon(data = data.frame(x = c(0, 0, 20, 20), y = c(4, 44, 64, 44)),
               fill = "green") + 
  geom_polygon(data = data.frame(x = c(0, 0, 20, 20), y = c(-3, 4, 44, 37)),
               fill = "yellow") + 
  geom_polygon(data = data.frame(x = c(0, 0, 20, 20), y = c(-20, -3, 37, -20)),
               fill = "orange") + 
  geom_point() + 
  theme_classic2() +
  geom_abline(intercept = 4, slope = 2, color = "gray", linetype = "dotted") +
  geom_abline(intercept = -3, slope = 2, color = "gray", linetype = "dotted") +
  coord_cartesian(xlim = c(0, 10), ylim = c(0, 10))

reprex 包(v0.3.0)于 2020-05-13 创建


推荐阅读