Cómo realizar un desplazamiento de polígono hacia afuera en JMPHola a todos,
Me gustaría preguntar si es posible realizar un desplazamiento de polígono hacia afuera en JMP. De ser así, ¿podrían explicarme cómo hacerlo?
Supongamos que tengo las coordenadas de un hexágono y quiero dibujar una zona de amortiguamiento con una distancia de 10 alrededor del hexágono. ¿Cómo puedo hacerlo?
Muchas gracias
Automatización y scriptingRe: Cómo realizar el desplazamiento de polígono hacia afuera en JMP¿De donde viene el hexágono original?
¿Lo estás produciendo usando un JMP Graph Box?
Detalles más específicos serán muy útiles.
Re: Cómo realizar el desplazamiento de polígono hacia afuera en JMPHola @txnelson ,
El polígono se obtiene del gráfico de contorno guardando el contorno

Después de guardar los contornos, trazo el gráfico X e Y. ¿Cómo puedo dibujar el desplazamiento a lo largo del contorno del polígono? Muchas gracias.

Re: Cómo realizar el desplazamiento de polígono hacia afuera en JMPJMP permite añadir gráficos adicionales a cualquier salida gráfica mediante el script "Añadir gráficos". El índice de scripts ofrece documentación y ejemplos sobre cómo añadir objetos adicionales.
Ayuda=>Índice de scripts
Hay un conjunto completo de primitivas gráficas disponible en JSL.
A continuación se muestra un ejemplo sencillo tomado directamente de la Guía de secuencias de comandos que ilustra esta capacidad.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
Polygon( [60, 72, 57], [75, 120, 120] );
);

Re: Cómo realizar el desplazamiento de polígono hacia afuera en JMPHola @txnelson
Como en tu gráfico, introducimos manualmente un número para dibujar el polígono. ¿Hay alguna forma de hacerlo mediante scripts? Por ejemplo,
Tenemos una lista de coordenadas en X e Y y una distancia. ¿Cómo puedo realizar un cálculo mediante script?
Además, me gustaría hacer una pregunta. Al trazar un gráfico de contorno y guardarlo, JMP genera una tabla con las coordenadas X e Y.
Me encontré con el problema de que, al usar una sintaxis como "En polígono (a, b, matriz x, matriz y)", se devuelve un resultado incorrecto. Incluso algunos puntos están dentro del polígono, pero JMP los devuelve fuera del polígono.
¿Necesito realizar una clasificación o procesar datos antes de usar In Polygon?
Gracias
Re: Cómo realizar el desplazamiento de polígono hacia afuera en JMP¿Has intentado trazar el polígono que estás obteniendo y se parece a lo que esperabas?
Re: Cómo realizar el desplazamiento de polígono hacia afuera en JMPCreo que cuando dices que "introducimos manualmente el número en el gráfico", indicas que el JSL está "codificado" para un polígono específico. Sí, es cierto, pero no significa que deba estarlo. JSL es un lenguaje de scripting completo. Los valores numéricos que definen cualquier polígono que quieras generar se pueden calcular con JSL y luego usar con la función Polygon() para dibujar el polígono que quieres mostrar. Sospecho que si quieres dibujar un polígono de 10 unidades alrededor de los puntos que estás mostrando, probablemente tendrás que recorrer todos los valores, calculando la distancia desde la media de todos los valores x, y hasta el punto específico, sumar 10 unidades a la distancia y luego calcular el punto x, y de ese valor. Algo similar. Pero todo eso es posible con JSL. A continuación se muestra un ejemplo sencillo de cómo dibujar un polígono para incluir el máximo de puntos x e y.
Names Default To Here( 1 );
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
// Find the max X point and it's y value
maxX = col max(:height);
maxXyvalue = :weight[(dt << get rows where(:height==maxX))[1]];
minX = col min(:height);
minXyvalue = :weight[(dt << get rows where(:height==minX))[1]];
maxY = col max(:weight);
maxYxvalue = :Height[(dt << get rows where(:weight==maxY))[1]];
minY = col min(:weight);
minYxvalue = :Height[(dt << get rows where(:weight==minY))[1]];
polygon((maxX||minX||minYxvalue||maxYxvalue)`, (maxXyvalue || minXyvalue || minY ||maxY)` );
);
