我希望在 R 中创建一个图,其中的点分为四个象限(如附图所示),然后根据组将颜色应用于每个象限。我的搜索并没有得到太多结果,所以我不太确定从哪里开始构建这段代码。理想情况下,这将使用 ggplot,但任何建议都会受到赞赏。
我认为这就是您最需要寻找的:
我将使用iris数据作为示例,Petal.Length绘制在x-axis和Petal.Width上y-axis。
x首先,计算和轴的中点y:
x_mid <- mean(c(max(iris$Petal.Length, na.rm = TRUE),
min(iris$Petal.Length, na.rm = TRUE)))
y_mid <- mean(c(max(iris$Petal.Width, na.rm = TRUE),
min(iris$Petal.Width, na.rm = TRUE)))
Run Code Online (Sandbox Code Playgroud)
现在,我将使用dplyr将每个点分配给一个象限mutate,然后将其通过管道传输到ggplot2:
library(dplyr)
library(ggplot2)
iris %>%
mutate(quadrant = case_when(Petal.Length > x_mid & Petal.Width > y_mid ~ "Q1",
Petal.Length <= x_mid & Petal.Width > y_mid ~ "Q2",
Petal.Length <= x_mid & Petal.Width <= y_mid ~ "Q3",
TRUE ~ "Q4")) %>%
ggplot(aes(x = Petal.Length, y = Petal.Width, color = quadrant)) +
geom_vline(xintercept = x_mid) + # plot vertical line
geom_hline(yintercept = y_mid) + # plot horizontal line
geom_point()
Run Code Online (Sandbox Code Playgroud)
这给了我们以下结果:
如果您想更改处理直接落在象限线上的值的方式,您可以使用>=或符号。<
另外,如果您不需要图例,只需guides(color = FALSE)在末尾添加即可