首页 > 解决方案 > 你能从 ggplot2::geom_density_2d_filled 图中得到多边形坐标吗?

问题描述

是否可以获取使用 geom_density_2d_filled 创建的多边形的坐标?

示例数据:

library(ggplot2)
library(tidyverse)

set.seed(123)
df <- tibble (x = sample(1:100, 50, rep = TRUE),
              y = sample(1:100, 50, rep = TRUE))

g <- ggplot(data = df) +
  geom_density_2d_filled(aes(x=x,y=y),
                         bins=10)

我可以获得一个或多个创建的形状的区域定义吗?会对粗略绘制的多边形感到满意。这甚至可能吗?

标签: rggplot2

解决方案


如果您正在寻找等高线的 (x, y) 坐标,您可以使用ggplot_build和查看data元素进行提取。

library(ggplot2)
library(tidyverse)

ggbld <- ggplot_build(g)

gdata <- ggbld$data[[1]]
head(gdata)

输出

       fill                level         x        y piece  group subgroup    level_low
1 #440154FF (1.56e-05, 3.11e-05] 10.717172 8.185262     1 -1-002        1 1.555556e-05
2 #440154FF (1.56e-05, 3.11e-05]  9.787879 8.639536     1 -1-002        1 1.555556e-05
3 #440154FF (1.56e-05, 3.11e-05]  9.475167 8.797980     1 -1-002        1 1.555556e-05
4 #440154FF (1.56e-05, 3.11e-05]  8.858586 9.107321     1 -1-002        1 1.555556e-05
5 #440154FF (1.56e-05, 3.11e-05]  7.929293 9.597925     1 -1-002        1 1.555556e-05
6 #440154FF (1.56e-05, 3.11e-05]  7.639536 9.757576     1 -1-002        1 1.555556e-05
    level_high    level_mid nlevel  n PANEL colour size linetype alpha
1 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA
2 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA
3 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA
4 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA
5 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA
6 3.111111e-05 2.333333e-05    0.2 50     1     NA  0.5        1    NA

然后你可以逐级绘制来演示:

gdata %>%
  ggplot() +
    geom_point(aes(x, y, color = level))

阴谋

在此处输入图像描述


推荐阅读