美文网首页
泰森多边形--邻近图

泰森多边形--邻近图

作者: 倪桦 | 来源:发表于2023-04-23 16:48 被阅读0次

Voronoi图又叫泰森多边形、Dirichlet图、邻近图, 是一种按距离划分空间中样本点邻近区域的分割空间平面方法,每个多边形的边是由空间中两邻点间直线的垂直平分线组成, 可以一个有限样本空间完全细分为多面体。Voronoi diagram - Wikipedia

建立 Voronoi 图算法的关键是对离散数据点合理地连成三角网,即构建 Delaunay 三角网。

特点

1、每个泰森多边形内仅含有 一个离散点数据(称为 生成元);
2、泰森多边形内的点到相应离散点的距离最近;
3、位于泰森多边形边上的点到其两边的离散点的距离相等。
4、若某物从不同的点以均匀的增长率增长,Voronoi 图的生成就是一种自发模式

应用

泰森多边形图基于其非常直观的展示方式,可用于定性分析、统计分析、邻近分析等,通过创建泰森多边形创建的多边形要素可对可用空间进行划分并将其分配给最近的点要素。泰森多边形有时会用于替代插值操作,以便将一组样本的点测量值概化到最接近他们的区域,从而建立整个平面的区域划分 。例如使用泰森多边形可将取自一组气候测量仪的测量值概化到周围区域。

The fascinating world of Voronoi diagrams | by Francesco Bellelli | Towards Data Science
How Voronoi diagrams help us understand our world – The Irish Times

GGPLOT 实现

  • 1、ggvoronoi--示例代码

Voronoi diagram in ggplot2 with ggvoronoi | R CHARTS (r-charts.com)

pacman::p_load(Seurat,ggplot2,ggvoronoi,ggforce,dior,dplyr)
data.use <- DimPlot(pbmc_small)$data
ggplot(data.use, aes(tSNE_1,tSNE_2)) +
    geom_voronoi(aes(fill = factor(ident)),color = "white",alpha = 1) +
    geom_path(stat="voronoi",alpha=.08,size= 2,color = "white") +
    geom_path(stat="voronoi",alpha=.05,size= 3,color = "grey80") +
    geom_point(size = 3) + 
    scale_fill_brewer(palette = "Accent") +
    tidydr::theme_dr() +  theme(panel.grid = element_blank())
  • 2、ggforce--示例代码 ggforce添加了一些额外扩展效果

Voronoi tesselation and delaunay triangulation — geom_voronoi • ggforce (data-imaginist.com)

ggplot(data.use, aes(tSNE_1,tSNE_2, group = -1L)) +
    geom_voronoi_tile(aes(fill = factor(ident)),color = "white") +
    geom_voronoi_segment(alpha=.08,size= 2,color = "white") +
    geom_voronoi_segment(alpha=.05,size= 2,color = "grey80") +
    geom_point(aes(size = after_stat(vorarea)),stat = 'delvor_summary') +
    scale_fill_brewer(palette = "Accent") +
    tidydr::theme_dr() +  theme(panel.grid = element_blank())
  • 3、从质心生成泰森多边形

r - Extend geom_voronoi past its limits with scale_*_continuous - Stack Overflow

pacman::p_load(Seurat,ggplot2,ggvoronoi,ggforce,dior,dplyr)
data.use <- DimPlot(pbmc_small)$data
vnor_dat <- data.use %>% group_by(ident) %>% summarise(tSNE_1 = median(tSNE_1),tSNE_2 = median(tSNE_2),.groups = "drop")
outline.dt <- data.frame(x = c(-80, 90 , 90, -80),y = c(-30, -30, 30, 30))
ggplot(vnor_dat,aes(tSNE_1,tSNE_2)) + 
    geom_voronoi(aes(fill = factor(ident)),outline = outline.dt,alpha = 1) +
    geom_path(stat="voronoi",alpha=0.8,size= 0.1,color = "black",outline = outline.dt) +
    geom_point(pch = "+",alpha = 0.3,size = 20,aes(color = ident),show.legend = F) +
    geom_point(data = data.use,aes(color = ident),size = 2,show.legend = F) +
    scale_fill_manual(values = c("#2d333f","#f25a33","#f6f2e6")) +
    scale_color_brewer(palette = "Set1") +
    tidydr::theme_dr() +  theme(panel.grid = element_blank())

Classic Voronoi diagram 配色参考
Chapter 74 Tutorial of three ggplot2 based packages | EDAV Fall 2021 Tues/Thurs Community Contributions (jtr13.github.io)

相关文章

  • geotools中泰森多边形的生成

    概述 本文讲述如何在geotools中生成泰森多边形,并shp输出。 泰森多边形 1、定义 泰森多边形又叫冯洛诺伊...

  • ArcGIS 计算面要素A中含有面要素B的比例

    问题描述:A为白色的泰森多边形面,B为粉色的城区面积,如何计算每个泰森多边形的城区面积占比? 步骤: 相交利用相交...

  • FunTaste

    1、泰森多边形模型 - Voronoi diagramhttps://en.wikipedia.org/wiki/...

  • 我不会再熬夜画图了!

    今天给大家推送的是关于RHINO的教程,用GRASSHOPPER做泰森多边形。 部分图 以下是制作过程 第一步: ...

  • 教学第14周复盘20171210@张新锋

    地理信息系统原理 课堂内容梳理 知识:TIN和泰森多边形 教法:是什么,应用实例原理:垂直平分线、权重如何用:泰森...

  • iOS 不规则(多边形)图形切图

    iOS 不规则(多边形)图形切图 iOS 不规则(多边形)图形切图

  • 一刻钟刻意练习丨002

    拳王泰森的恩师是库斯-达马托,被泰森誉为将军,泰森则是将军手下的小士兵。达马托非常了解泰森的特点和风格,因此给泰森...

  • _

    午餐时间又看了一遍最强大脑。往年就看不懂了,这次又百度了,依然不懂什么是泰森多边形。 当《让我留在你身边》响起时,...

  • Texture Type---Sprite & 图片分割

    Sprite Mode: 1. Single:单图。 2. Multiple:多图。 3. Polygon:多边形...

  • 泰森

    好巧,昨天刚提到泰森,今天就看到了泰森的一则新闻:53岁的泰森准备复出参加拳击比赛。 泰森从05年退役,过了十五年...

网友评论

      本文标题:泰森多边形--邻近图

      本文链接:https://www.haomeiwen.com/subject/fzenddtx.html