在 JMP 或 JSL 中创建 Voronoi 图大家好,我想在 JMP 环境中创建一个 Voronoi 图。 我有一组位于同一平面 (Z) 内的点坐标 (X & Y)。 我想要一种方法来显示每单位面积的点密度。 Voronoi 图是实现此目的的一种方法。 它显示了该点周围的边界,该边界由该点 P1 和下一个点 Pn 之间的欧几里得距离的中点定义。
下面是维基百科的定义: https://en.wikipedia.org/wiki/Voronoi_diagram
以下是创建说明MATLAB 中的这种图表
回复:在 JMP 或 JSL 中创建 Voronoi 图你好,
首先对 Voronoi 的拼写错误感到抱歉,老眼睛。 我不确定您要回答什么问题。 给定半径为 150 毫米的圆形图片,我认为您可能正在寻找晶圆图上的密度或聚类模式。 我有半导体制造数据方面的经验。
JMP 有许多聚类方法,而且由于 JMP12 提供了多种空间模式方法,包括一种可以根据模式相似性对晶圆进行聚类的方法。下面的脚本打开一个 JMP 样本数据表,表示 125 个具有不同缺陷密度的晶圆,并按模式对晶圆进行分类/聚类。 它也可以为 1 个晶圆做到这一点。
Names Default to Here(1);
dt = Open("$sample_data/Wafer Stacked.jmp");
dt << run script( "Spatial Cluster of Defects");
spWin = Window("Wafer Stacked - Hierarchical Cluster of Defects");
spClust = (spWin<< child)<<CHILD></CHILD>
我解决了这个任务,因为我一直在尝试学习更多关于使用具有网格方法的 opengl 生成 3D 地形的信息。 但是,我对它们的了解还不够。 我决定解决创建对偶 Voronoi 图的问题,因为空间几何是我的兴趣所在。 正如我在第一个回复中所述,JMP 三角化(可以在对象下的帮助 > 脚本索引中找到)创建了 Delaunay 三角化,还提供了获取、三角形、点和边的消息。
我扩展了我的脚本来计算 Voronoi 对偶图。 我没有测试密集点的性能;许多具有替代算法和近似值的网站都处理性能问题。 使用 Craig Hales 提供的链接中报告的伪代码,我创建了一个脚本。 我只在单个示例数据表上对其进行了测试。 顺便说一句,数据表是通过复制链接中的图片生成的,将其用作 XY 图中的背景,并在我单击顶点时使用捕鼠器捕获坐标。 你会注意到最左边的点比原来的点多一点。 [是的,JMP 提供了许多工具来处理任务。]新脚本似乎可以完成这项工作。它不是应用程序就绪的,使用方形框架,而不是圆形晶圆,并且它标准化了点(因此在 X 和 Y 中以 +/-3 为中心)。
该脚本包含一个文件LCombine.jsl (来自“JMP 脚本语言的 JSL 配套应用程序,第 2 版”的脚本之一)。 它是附加的。 您需要将附加脚本中的路径更改为保存它的目录。 我附上了脚本生成的图片。 它在 JMP 12、13 和 14 中进行了测试。
如果您可以缩小任务范围,例如您想对 Voronoi 图或集群执行的操作,那将很有帮助。
它在我的列表中并不高,但我相信 opengl 网格方法可能能够创建 Voronoi 图。 在明确地说任何事情之前,我需要做更多的学习/探索。
voronoi diagram with JMPvoronoi diagram with JMPJMP 的 voronoi 图
回复:在 JMP 或 JSL 中创建 Voronoi 图嗨 gzmorgan0,
这是一个很好的开始! 感谢您的帮助。
我以前确实玩过非参数密度图,但我不确定这是否提供了我需要的结果。 你的帖子帮助我找到了正确的文档来从数学上解释非标准密度图。 我在下面分享这个定义。 现在我已经读到它了,我仍然很担心。
Nonpar Density estimates a smooth nonparametric bivariate surface that describes the density
of data points. The plot adds a set of contour lines showing the density (Figure 5.16). The
contour lines are quantile contours in 5% intervals. This means that about 5% of the points
generated from the estimated nonparametric distribution are below the lowest contour, 10%
are below the next contour, and so on. The highest contour has about 95% of the points below
it.
轮廓很好,但它们只是将点分成相等的分位数。 它们不一定显示点在我区域内的分布有多均匀。 我附上了一个数据点数组的例子来试图表达我的观点。 这些等高线是否代表等量的表面积?
一些后续问题:
(1) 有没有办法获取非标准轮廓数据并对其进行处理以显示单位面积的密度? 也许这就是分位数密度内红色三角形菜单中的“保存密度网格”选项所做的。
(2) 我可以使用不同的颜色主题吗? 我强烈反对光谱颜色主题。 但是,那颜色主题()功能在内部不起作用非标准密度()在 JMP13 上。
(3) 你能帮我扩展 Delaunay 三角剖分以实际显示 Voronoi 图吗? 我自己对数学不太满意。
回复:在 JMP 或 JSL 中创建 Voronoi 图很好的例子!
和这里的讨论: https://stackoverflow.com/questions/85275/how-do-i-derive-a-voronoi-diagram-given-its-point-set-and-its-delaunay-triangula
回复:在 JMP 或 JSL 中创建 Voronoi 图我不是这方面的专家,但是,我记得读过 JMP 三角化是 Delaunay 三角化的一种实现,它是 Voroni 的“对偶”。 我没有计算“对偶”图的算法。
附件是我创建的一个名为 voroni.jmp 的示例数据集,用于模拟在多个 Voroni 培训文档中找到的一组点(请参阅http://cgl.uni-jena.de/pub/Workshops/WebHome/cgl12new.pdf ).附加的 PNG 文件显示了 Voroni 图和 Delaunay tesselation(三角化)的“双重”关系。这个附加的 jmp 文件附有几个数据表脚本。 我在 JMP 12,13 和 14 中测试了它们。
运行每个创建图形的表脚本。 由于您对每单位面积的密度感兴趣,请查看图表 Y 乘 X 的密度,然后使用倒置的红色三角形菜单选择网格图以获得密度的 3D 视图。 这些视图可能会满足您的需要或提供有关密度的更多信息。
如果密度图不能满足您的目的并且您仍然对 Voroni 图感兴趣,您可以从 deldir R 包中获取它们:请参阅https://flowingdata.com/2016/04/12/voronoi-diagram-and-delaunay-triangulation-in-r/由于 JMP 确实有最近邻和距离算法,也许有人会为此博客提供必要的步骤(或 JSL)来创建 Voroni 图。
你的问题促使我测试 JMP 三角化方法并验证它产生“经典”结果......在 X 和 Y 坐标被标准化之后。 [ 谢谢! ] 附带的 JSL 有绘制三角形的步骤。
