r - 你能从 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)
我可以获得一个或多个创建的形状的区域定义吗?会对粗略绘制的多边形感到满意。这甚至可能吗?
解决方案
如果您正在寻找等高线的 (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))
阴谋
推荐阅读
- python - 在python中运行for循环以获得更多的迭代次数
- c - 在没有任何格式说明符的情况下将字符串文字作为参数传递给打印函数?
- azure - 从 Graph API 获取所有已登录/登录的 AD B2C 用户
- swagger - 分离开放 API 文档
- python - Pip 安装和 python 头文件
- ios - 注销后 MSALwebView 仍然在 MSAL 中显示以前的用户凭据
- awk - 计算 awk 中每一行的标准差
- android - React Native:react-native run-android 没有启动 Android 模拟器
- nginx - 如何通过 nginx 在不同位置提供不同的 html 文件?
- java - 杰克逊与建设者模式和反向参考