Creación de diagramas de Voronoi en JMP o JSLHola a todos, me gustaría crear un diagrama de Voronoi dentro del entorno JMP. Tengo un conjunto de coordenadas de puntos (X e Y) que se encuentran dentro del mismo plano (Z). Me gustaría una forma de mostrar la densidad de los puntos por unidad de área. Un diagrama de Voronoi sería una forma de lograr esto. Muestra el límite alrededor del punto que está definido por la mitad de la distancia euclidiana entre ese punto P1 y el siguiente punto Pn.
Aquí está la definición de Wikipedia: https://en.wikipedia.org/wiki/Voronoi_diagrama
Aquí hay instrucciones para crear este tipo de diagrama en MATLAB
Re: Crear diagramas de Voronoi en JMP o JSLHola,
En primer lugar, perdón por la falta de ortografía de Voronoi, ojos viejos. No estoy seguro de qué pregunta está tratando de responder. Creo que podría estar buscando un patrón de densidad o agrupación en un mapa de obleas, dada la imagen circular con un radio de 150 mm. Tengo experiencia con datos de fabricación de semiconductores.
JMP tiene muchos métodos de agrupamiento y, desde JMP12, proporciona varios métodos de patrones espaciales, incluido uno que puede agrupar obleas según las similitudes de los patrones.El siguiente script abre una tabla de datos de muestra de JMP que representa 125 obleas con diferentes densidades de defectos y clasifica/agrupa las obleas por patrones. También puede hacerlo por 1 oblea.
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>
Abordé esta tarea porque he estado tratando de aprender más sobre la generación de terrenos 3D usando opengl que tiene métodos de malla. Sin embargo, todavía no sé lo suficiente sobre ellos. Decidí abordar la creación del gráfico dual de Voronoi porque la geometría espacial es de mi interés. Como dije en mi primera respuesta, JMP Triangularization (se puede encontrar en Ayuda > Índice de secuencias de comandos en objetos) crea la traingularización de Delaunay y también proporciona mensajes para obtener, triángulos, puntos y bordes.
Expandí mi script para calcular el gráfico dual de Voronoi. No he probado el rendimiento para puntos densos; muchos de los sitios web con algoritmos alternativos y aproximaciones se ocupan del rendimiento. Usando el pseudocódigo informado en el enlace que proporcionó Craig Hales, creé un script. Solo lo he probado en la tabla de datos de ejemplo único. Por cierto, esa tabla de datos se generó copiando la imagen del enlace, usándola como fondo en un gráfico XY y usando una trampa para capturar las coordenadas cuando hice clic en los vértices. Notará que el punto más a la izquierda está un poco más a la izquierda que el original. [sí, JMP proporciona numerosas herramientas para abordar una tarea.]El nuevo guión parece hacer el trabajo.No está listo para la aplicación, utiliza un marco cuadrado, no una oblea circular, y estandariza los puntos (centrados entre +/-3 en X e Y).
El script incluye un archivo. LCombine.jsl (uno de los scripts de "JSL Companion Applications of the JMP Scripting Language, 2nd Ed."). Está adjunto. Deberá cambiar la ruta en el script adjunto al directorio donde lo guardó. Adjunté la imagen generada por el script. Fue probado en JMP 12, 13 y 14.
Si puede reducir la tarea, como lo que quiere hacer con el gráfico o los grupos de Voronoi, sería útil.
No ocupa un lugar destacado en mi lista, pero creo que los métodos de malla opengl podrían crear un gráfico de Voronoi. Necesito aprender/explorar más antes de decir algo definitivamente.
voronoi diagram with JMPvoronoi diagram with JMPdiagrama de voronoi con JMP
Re: Crear diagramas de Voronoi en JMP o JSLHola gzmorgan0,
¡Esto es un gran comienzo! Gracias por tu ayuda.
Previamente jugué con los diagramas de densidad no paramétricos, pero no estaba seguro de que esto proporcionara los resultados que necesitaba. Su publicación me ayudó a encontrar la documentación correcta para explicar matemáticamente las gráficas de densidad nonpar. Estoy compartiendo esa definición a continuación. Ahora que lo he leído, todavía estoy preocupado.
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.
Los contornos son agradables, pero solo dividen los puntos en cuantiles iguales. No necesariamente muestran qué tan uniformemente distribuidos están los puntos dentro de mi área. Adjunté un ejemplo de una matriz de puntos de datos para tratar de transmitir mi punto. ¿Estos contornos representan cada uno una cantidad igual de área de superficie ?
Algunas preguntas de seguimiento:
(1) ¿Hay alguna manera de tomar los datos de contorno no par y manipularlos para mostrar la densidad por unidad de área? Tal vez esto es lo que hace la opción "guardar cuadrícula de densidad" del menú del triángulo rojo dentro de la densidad del cuantil.
(2) ¿Puedo usar un tema de color diferente? Me opongo firmemente al tema del color del espectro. sin embargo, el tema de color() la función no funciona dentro densidad no par() en JMP13.
(3) ¿Puede ayudarme a extender la triangulación de Delaunay para mostrar realmente el diagrama de Voronoi? Yo mismo no me siento cómodo con las matemáticas.
Re: Crear diagramas de Voronoi en JMP o JSL¡Buen ejemplo!
y discusión aquí: https://stackoverflow.com/questions/85275/how-do-i-derive-a-voronoi-diagram-given-its-point-set-and-its-delaunay-triangula
Re: Crear diagramas de Voronoi en JMP o JSLNo soy un experto en esta área, sin embargo, recordé haber leído que la triangularización JMP es una implementación de la triangularización de Delaunay, que es el "dual" de Voroni. No tengo los algoritmos para calcular la trama "dual".
Se adjunta un conjunto de datos de muestra llamado voroni.jmp que creé para emular un conjunto de puntos que se encuentran en varios documentos de capacitación de Voroni (ver http://cgl.uni-jena.de/pub/Workshops/WebHome/cgl12new.pdf ).El archivo PNG adjunto muestra la relación "dual" de las parcelas de Voroni y la teselación de Delaunay (triangularización).Este archivo jmp adjunto tiene varios scripts de tablas de datos adjuntos. Los probé en JMP 12,13 y 14.
Ejecute cada uno de los scripts de tabla que crean gráficos. Dado que está interesado en la densidad por unidad de área, mire el gráfico Densidad de Y por X y luego use el menú del triángulo rojo invertido para seleccionar un Gráfico de malla para obtener una vista 3D de la densidad. Estas vistas pueden satisfacer sus necesidades o ser más informativas con respecto a la densidad.
Si los diagramas de densidad no sirven para su propósito y aún está interesado en los diagramas de Voroni, puede obtenerlos del paquete deldir R: consulte https://flowingdata.com/2016/04/12/diagrama-de-voronoi-y-triangulación-delaunay-en-r/ Dado que JMP tiene algoritmos de distancia y vecino más cercano, tal vez alguien proporcione a este blog los pasos necesarios (o JSL) para crear diagramas de Voroni.
Su pregunta me motivó a probar el método de Triangularización JMP y verificar que produce los resultados "clásicos"... después de estandarizar las coordenadas X e Y. [ ¡Gracias! ] El JSL adjunto tiene pasos para dibujar los triángulos.
