找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5246

积分

0

好友

741

主题
发表于 昨天 21:31 | 查看: 8| 回复: 0

假设你在一家房地产公司工作,眼下急需分析全城房产分布,并清晰地界定每处房产的市场影响范围。那么,如何在二维平面上直观划分这些势力范围呢? Voro noi 图正是解决此类空间划分问题的利器。

下面我们就通过一个具体案例来实践:生成20处随机房产坐标,绘制其 Voronoi 图,并用不同色块标注影响力区域。

首先,我们需要生成模拟的房产数据。利用 NumPy 设置随机种子并生成 20 个坐标点(范围在 100x100 内):

import numpy as np

np.random.seed(42)
properties = np.random.rand(20, 2) * 100

接下来是核心的可视化部分。我们将使用 SciPy 的 Voronoi 模块进行空间计算,并结合 Matplotlib 完成绘制。

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi

np.random.seed(42)
properties = np.random.rand(20, 2) * 100

vor = Voronoi(properties)

fig, ax = plt.subplots(figsize=(10, 10))

# 绘制 Voronoi 图,去除无穷大的区域
regions = [r for r in vor.regions if -1 not in r and r]
for region in regions:
    polygon = [vor.vertices[i] for i in region]
    plt.fill(*zip(*polygon), alpha=0.4)

# 绘制房产位置(黑点)
plt.plot(properties[:, 0], properties[:, 1], 'ko', markersize=8)

plt.title('房产分布及影响力区域')
plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.xlim(0, 100)
plt.ylim(0, 100)

# 添加图例
plt.plot([], [], 'ko', label='房产')
plt.plot([], [], color='C0', alpha=0.4, linewidth=10, label='影响力区域')
plt.legend()

plt.show()

房产分布及影响力区域的Voronoi图可视化结果

这张图怎么看?图中每个彩色多边形就是一个“影响力区域”,黑色圆点代表“房产”的实际位置。你会发现,任意一点落在某个多边形内,就意味着它距离该多边形内的黑点(房产)最近——这完美回答了“这块区域属于谁”的问题。

让我们拆解一下这段代码的关键步骤:

  1. 数据准备np.random.rand(20, 2) * 100 负责生成 0 到 100 内的随机坐标。固定随机种子 (seed=42) 是保证结果可复现的好习惯。
  2. 核心计算Voronoi(properties) 会依据房产坐标算出所有顶点、边和区域信息。
  3. 绘制区域:遍历 vor.regions 时,我们特意过滤掉含有 -1 的区(这代表边界向外无限延伸,无法完全绘制)。之后利用顶点坐标构建多边形,并用半透明色填充。
  4. 标注实体plt.plot 配上 'ko' 参数,即黑色实心圆点,精准标记出房产位置。
  5. 修饰与限定:设置坐标轴范围 xlimylim,保证视野锁定在数据所在空间。而添加图例的经典技巧其实是绘制了空数据([]),只为在右上角生成对应的图形说明。

这个可视化过程体现了 Python 数据处理与可视化的强大联动:

  • 利用 NumPy 快速构造模拟数据
  • 借助 SciPy 的空间分析能力进行几何构图
  • 通过 Matplotlib 完成复杂的多边形填充和组合图形绘制

延伸知识:Voronoi 图从哪来,还能用在哪?

Voronoi 图由乌克兰数学家 Georgy Voronoi 于 1908 年提出,其背后的思想在大自然中无处不在,比如长颈鹿的斑纹、蜂巢的构造等。

除了房产分析,它的应用边界其实相当宽广:

  • 计算几何学:它的“对偶图”是 Delaunay 三角剖分,两者均是几何算法的基础。在二维空间构建 Voronoi 图,基于 Fortune 算法可将时间复杂度控制在 O(n log n)
  • 机器学习:在 K-最近邻 (KNN) 算法中,Voronoi 图提供了直观的几何理解:新数据点将自动归类到其所在区域的主要类别里。
  • 宏观扩展:虽然三维以上的 Voronoi 图很难直观展示,但它在高维空间聚类和建模中同样发挥着关键作用。

云栈社区里也有不少朋友在讨论相关话题,当你需要处理“空间划分”、“最近邻”或是计算几何相关的性能调优时,不妨多看看大家踩过的坑和经验分享。希望本文能帮你扎实地迈出空间数据可视化的第一步。




上一篇:OpenLess 开源语音输入工具 3 个月获 2900 Star:可自选 ASR 与 LLM 模型
下一篇:Hermes免费接入LLMQuant数据源:零代码三步让AI Agent全天候自动投研
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-2 09:52 , Processed in 1.097740 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表