You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否基于已有Delaunay三角剖分直接绘制Voronoi图?

可以直接叠加Voronoi剖分

完全可以在你已有的Delaunay三角剖分绘图上叠加对应的Voronoi图,实现起来很简单——因为Delaunay三角剖分和Voronoi图是对偶图关系,Scipy的scipy.spatial模块同时提供了两者的实现,且可以共用同一组原始点数据。

针对你的环境(Python 3.9.7 + Matplotlib 3.8.4),只需要在原有代码基础上添加几行即可实现叠加:

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

points = np.array([[0, 0], 
                   [1, 0], 
                   [0.5, 0.5],
                   [1 , 0.5]])
tri = Delaunay(points) 
fig, ax = plt.subplots(figsize=(8, 4))
ax.set_aspect('equal', 'box')

# 绘制Delaunay三角剖分
plt.triplot(points[:,0], points[:,1], tri.simplices.copy(), color='blue') 
plt.plot(points[:,0], points[:,1], 'bo') 

# 生成并绘制Voronoi图(叠加在同一子图上)
vor = Voronoi(points)
voronoi_plot_2d(vor, ax=ax, show_points=False, show_vertices=False, line_colors='red', line_width=1.5)

plt.show() 

关键说明:

  • 导入Voronoi类和voronoi_plot_2d工具函数,后者专门用于快速绘制2D Voronoi图
  • 用同一组points生成Voronoi对象
  • 调用voronoi_plot_2d时指定ax=ax,确保图形绘制在已有的子图中;通过show_points=False和show_vertices=False避免重复绘制原始点和Voronoi顶点(如果需要显示可以去掉这两个参数)
  • 可以通过line_colors、line_width等参数调整Voronoi图的样式,和Delaunay图区分开

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:36:09