Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoHola, tengo un script que crea el gráfico adjunto de algunos puntos de datos y lo superpone con un gráfico de líneas adicional. Ahora necesito poder calcular el delta entre los puntos alto y bajo en múltiples coordenadas x diferentes. Puedo hacer el primero ya que incluye todos los valores de las coordenadas x, pero no sé cómo hacerlo solo para los valores de las coordenadas x entre las líneas naranjas calculadas, así como solo para la curva inicial en Tanto el lado izquierdo como el derecho dentro de los cálculos de la línea naranja. Luego quería mostrar estos valores en el gráfico, si es posible, o en un cuadro de texto que se muestra cuando se realiza el gráfico. He incluido algunas imágenes que ayudan a explicar los 4 rangos diferentes desde los que necesito calcular el delta, además de incluir mi secuencia de comandos actual. La línea naranja puede cambiar según los datos, ya que se basa en un valor que el usuario ingresa cuando ejecuta el script. Cualquier ayuda es muy apreciada. ¡Gracias!



framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - framex_value/2) & :X coordinate < (76200 - framex_value/2) );
//dt << delete rows:
//FieldMat = matrix(Col Max(IntenCD)-(Col Min(IntenCD)));
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( FullMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Full field delta: " ), TextBox( Char( FieldMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// Determine X Matrix
xMat = matrix(76200 - (framex_value/2)) |/ matrix(76200 - (framex_value/2)) |/
matrix(76200 + (framex_value/2)) |/ matrix(76200 + (framex_value/2));
// The yMat is static
yMat = [1, 0.92, 0.92, 1];
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);</RETURN>Ingeniería de Calidad y ProcesosRe: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoPerfecto gracias @txnelson . Estos 2 cambios funcionaron. Está funcionando perfecto ahora. ¡Gracias de nuevo por toda la ayuda con esto!
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoDe forma predeterminada, cuando JMP crea una variable, como su xMat, etc., la variable permanecerá hasta que se cambie.Y, si en la primera ejecución de su código, la variable requerida no ha sido creada, cuando la solicite en su código, no tendrá un valor para proporcionar al programa, y entonces algunos cálculos no podrán ser ejecutado.Sin embargo, si más adelante en el script se establece la variable, permanecerá establecida hasta que se elimine o se modifique.Por lo tanto, cuando ejecuta el script por segunda vez y el código llega al punto en el que en la primera ejecución del script no pudo encontrar la variable requerida, esta vez la encontrará porque se configuró en una fecha posterior. tiempo en el código durante la última ejecución del script.
Encontré un posible lugar donde esto podría haber sucedido.Estaba configurando la variable dt después de realizar las actividades en la tabla de datos.Moví la línea de código más arriba en el script, para que el código funcione en una primera ejecución.También coloqué "Borrar símbolos()" como la primera línea del script.Esto borrará todas las variables del código cuando comience el script.Esto garantizará que los valores de las variables a las que se hace referencia deberán haberse creado en esta ejecución del código, ya que todos los valores de la última ejecución se han borrado.Pruebe el código y vea si funciona.
Clear Symbols();
Names Default To Here( 1 );
ramex_value = "";
w = New Window( "Frame size X", // opens a window with a title and this content...
<<RETURN result=""> (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)),
dt:Normalized,
.
)
) - Col Max( dt:Normalized ) - Col Min( dt:Normalized ) + 1;
Col Min( If( dt:X coordinate > (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)), dt:Normalized, . ) );
// Graph Builer and Delta display
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( dt:X Coordinate ), Y( dt:Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( Boxed, {75000, .94}, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( Boxed, {75000, .93}, "Within Frame Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
w << closeWindow;
)
)
)
)
);</RETURN>Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoEntonces, después de realizar más pruebas con mi script, parece que funciona perfecto (la segunda vez que lo ejecuto con los datos), pero no la primera vez. Después de la primera ejecución, no calcula ni muestra los deltas, pero la segunda vez que ejecuto el script funciona... Estoy confundido. Adjunté el código limpio, así como una imagen de la primera ejecución sin resultados... y una imagen de la segunda ejecución con resultados exitosos. ¿Qué me falta que no hace que mi script funcione correctamente la primera vez?
framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalized,
.
)
) - Col Max( :Normalized ) - Col Min( :Normalized ) +1;
Col Min(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalized,
.
)
);
// Graph Builer and Delta display
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( Boxed, {75000, .94}, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( Boxed, {75000, .93}, "Within Frame Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
w << closeWindow;
)
)
)
)
);</RETURN>

Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoGracias @txnelson .Pude resolver esto y está funcionando perfecto. Descubrí que necesitaba colocar { } alrededor de las coordenadas xy para que el texto apareciera en el gráfico. ¡Realmente aprecio todo su conocimiento y ayuda con mi guión!
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoEsa explicación adicional tiene sentido. Trabajaré en tus sugerencias. Gracias.
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de texto
// Is the purpose of the display window below, only to display the values of overallDelta and withinOrangeDelta?
// That is all it is going to do. It does not allow for any data input, just displaying of those values
overallDelta = 22;
withinOrangeDelta = 15;
New Window( " Delta results: ",
modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), Text Box( Char( overallDelta, 7, 4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Full field delta: " ), Text Box( Char( withinOrangeDelta, 7, 4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Edge of field delta: " ), Text Box( Char( 0 ) ) ),
)
)
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
// The code below will create your X Coordinate by Normalized graph
// If you have generated the xmat and ymat matrices, it will draw your orange line on the chart
// Then at a fixed XY point on the graph, of 500,.92 it will add in the text "Overall Delta = nn.nnnn"
// It is likely, that different data from your sample data will make the positioning of the statistics
// inapproprate if you have a hardwired value of 500,.92 for the display. So you will need to determine
// what those values need to be. You can get the values by determining the minimum values in the data table
// or you can query the displayed graph to get the axis minimums and then set the position from there.
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( 500, .92, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( 500, .915, "Within Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
// I don't see any window reference called "w"
w << closeWindow; // just the dialog, not the reportRe: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoNo te preocupes, eso es lo que me preguntaba.
¿Qué tal el texto que aparece en el gráfico? No estoy viendo esto. Puedo crear una ventana emergente que se abre antes del gráfico con los valores, pero realmente me gustó tu idea de mostrar esos valores en el gráfico para que se puedan ver con el gráfico. ¿Hay algo que me falta allí?
Incluí solo el final del guión como referencia.
¡Gracias de nuevo por toda la ayuda en esto!
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( overallDelta, 7,4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Full field delta: " ), TextBox( Char( withinOrangeDelta, 7,4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
text ( 500,.92, "Overall Delta = " || char(format(overallDelta, 7,4)));
text ( 500,.915, "Within Delta = " || char(format(withinOrangeDelta, 7,4)));
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoSí... aparentemente es mi error tipográfico... lo siento.Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoEntonces, las instancias en el código donde dice: Normalizar, ¿esto en realidad debería ser: Normalizado?

Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoLa columna normalizada se crea a partir de la tabla de datos que usted proporciona.¿Qué datos utilizó para crear los gráficos que muestra? La columna "Normalizada" se utiliza como uno de los valores del eje en esos gráficos.
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoGracias por la ayuda con esto, aunque todavía tengo algunos problemas. Cuando ejecuto el script, aparece el siguiente error.
Nombre sin resolver: Normalizar{16} en el acceso o evaluación de 'Normalize', :Normalize/*###*/
Además, si comento esta sección que tiene el problema, para probar los comentarios en pantalla, no aparecen en el gráfico.
¿Podría ayudarme a comprender el problema con estos?
gracias.
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoGenial gracias. Esto luce genial. Lo intentaré y veré cómo funciona. Realmente aprecio la ayuda con esto.
Re: Fórmula de script JMP para calcular el delta de múltiples rangos diferentes a partir de las coordenadas X de un archivo .csv y mostrarlo en un gráfico o en un cuadro de textoHe agregado un código a su gráfico (código no probado), que calculará los deltas generales e internos.Los cálculos delta izquierdo y derecho requieren las reglas para definir los cuadros.
También agregué una visualización muy simple para los 2 valores.
En ambos casos, le proporciono el enfoque que debe adoptarse para brindarle las próximas mejoras a su código.No puedo garantizar un código perfecto, pero deberías ver el concepto y poder seguirlo desde allí.
framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - framex_value/2) & :X coordinate < (76200 - framex_value/2) );
//dt << delete rows:
//FieldMat = matrix(Col Max(IntenCD)-(Col Min(IntenCD)));
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( FullMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Full field delta: " ), TextBox( Char( FieldMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// Determine X Matrix
xMat = matrix(76200 - (framex_value/2)) |/ matrix(76200 - (framex_value/2)) |/
matrix(76200 + (framex_value/2)) |/ matrix(76200 + (framex_value/2));
// The yMat is static
yMat = [1, 0.92, 0.92, 1];
// The overall delta
overallDelta = Col Max( :Normalized ) - Col Min( :Normalized );
// The delta between the lines
withinOrangeDelta = Col Max(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalize,
.
)
) - Col Max( :Normalized ) - Col Min( :Normalized );
withinOrangeDelta = Col Min(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalize,
.
)
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
text ( 500,.92, "Overall Delta = " || char(format(overallDelta, 7,4)));
text ( 500,.915, "Within Delta = " || char(format(withinOrangeDelta, 7,4)));
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);</RETURN>