Escala automática del eje Y del gráfico de variabilidad según el límite de especificaciones USL y LSLCuando hay datos atípicos, mi gráfico siempre se escala para mezclar o alcanzar el punto máximo, lo que hace que el gráfico no sea visible.
¿Es posible utilizar el script JSL para establecer dinámicamente el eje Y del gráfico de variabilidad en función de los parámetros límite USL y LSL que ya están integrados dentro de los parámetros? Por favor aconséjame. Gracias
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLDebe verificar si tiene la cantidad correcta de columnas, etc. antes del código que causa la alerta y luego agregar el código necesario para solucionar el problema.Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSL¿Cómo manejar la "Alerta JMP" en caso de que invoque solo un elemento/columna?
El "bucle for" provoca esta alerta
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLRe: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLAl hacerlo, tengo la sensación de que se tarda más en mostrar los gráficos.
¡Gracias de nuevo por su apoyo!
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLMe parece bien. No estoy exactamente seguro de otras mejoras, ya que no conozco los datos.Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLHola Jim,
¡Muchas gracias por tu apoyo!
Mejoré su código con esto, para obtener gráficos más atractivos:
owr[i][AxisBox( 2 )] << Min( spec["LSL"] - 0.1 * (spec["USL"] - spec["LSL"]) ) <<
Max( spec["USL"] + 0.1 * (spec["USL"] - spec["LSL"]) ) << Inc( (spec["USL"] - spec["LSL"]) / 10 );
owr[i][AxisBox( 2 )] << Format( Best, 6 );
¿Es algo que tú también harías?
¿O hay una forma más elegante?
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLConsulte el script a continuación para conocer los cambios necesarios para manejar sus nuevas solicitudes.En la mayoría de los casos, cualquier lista de columnas podrá sustituirse en una solicitud de plataforma, con una función Eval(), que expresa la lista en JMP.Ver el
Eval( colList )
en el guión a continuación.
Suponiendo que ya haya leído la sección sobre Árboles de visualización en la Guía de secuencias de comandos, los mensajes que se pueden pasar a los Objetos de visualización están documentados con ejemplos en el Índice de secuencias de comandos.
Ayuda==>Índice de secuencias de comandos
Al examinar los mensajes de AxisBox(), verá todos los mensajes disponibles.Entre los cuales se encuentra Inc().Es este cambio del incremento del eje lo que se utiliza para asegurar los valores en el gráfico después de cambiar los valores mínimo y máximo del eje.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colList = {"NPN1", "PNP1"};
For( i = 1, i <= N Items( colList ), i++,
// Turn on Show Limits
spec = Column( dt, colList[i] ) << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, colList[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
);
// create the graphs
ow = Oneway(
Y(
eval(colList)
),
X( :site ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
owr = ow << report;
// adjust the axes
For( i = 1, i <= N Items( owr ), i++,
spec = Column( dt, colList[i] ) << Get Property( "Spec Limits" );
(owr[i])[AxisBox( 2 )] << Min( spec["LSL"] ) << Max( spec["USL"] )
<< inc ((spec["USL"] - spec["LSL"]) / 10 );
);Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSL¡Gracias! Funcionó.
1)
¿Podrías ayudarme también a ajustar la configuración del eje x con la ayuda de un script?
No hay valores entre LSL y USL.
¿Quizás exista una estrategia para ajustar el eje x con un incremento significativo de Tick/Bin automáticamente?
2)
¿Es posible dar listacol = { "NPN1" , "PNP1" } ; a
Ay = De una sola mano (
Y (
: Nombre ( "NPN1" ) ,
: Nombre ( "PNP1" )
) , --> en lugar de :Nombre(), :Nombre()

Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLAquí hay un script que debería mostrarle cómo especificar correctamente los ejes.El nuevo aprendizaje que necesitarás estudiar es la manipulación de Display Trees.Esto está documentado en la Guía de secuencias de comandos que se encuentra en la Biblioteca de documentación de JMP.
Ayuda==>Biblioteca de documentación JMP

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colList = {"NPN1","PNP1"};
For(i=1,i<=N Items(colList),i++,
// Turn on Show Limits
spec = column(dt,colList[i]) << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
column(dt, colList[i]) <<
Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ),
Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
);
// create the graphs
ow = Oneway(
Y(
:Name( "NPN1" ),
:Name( "PNP1" )
),
X( :site ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
owr = ow << report;
// adjust the axes
For( i=1, i<= n items(owr),i++,
spec = column(dt,colList[i]) << Get Property( "Spec Limits" );
(owr[i])[AxisBox(2)] << min(spec["LSL"])<<MAX></MAX>
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLHola,
cómo modificar este script a continuación para escalar el gráfico automáticamente a LSL y USL.
@martindemel

Oneway(
Y(
:Name( "test1" ),
:Name( "testn" )
),
X( :Corner ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLHola,
Quiero usar la misma solución para mis gráficos de tendencias, pero tengo problemas de sintaxis.
¿Alguien sabe qué campos necesito cambiar si el nombre de mi columna de límites es: "CENTERLINE", "LCL_HS", "UCL_HS"?
¿Y también si necesito un ajuste si estoy creando un gráfico bivariado POR columnas?
¡gracias!
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLGracias Jim. ¡Funciona perfectamente!Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLAquí hay un script de ejemplo que muestra el código preciso sobre el uso de USL y LSL para establecer las configuraciones de los ejes máximo y mínimo.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Turn on Show Limits
spec = dt:NPN1 << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
dt:NPN1 <<
Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ),
Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
// Build the Chart
vc = Variability Chart(
Y( :NPN1 ),
X( :lot_id ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 1 )
);
// Set the Min and Max
Report( vc )[axisbox( 1 )] << Max( spec["USL"] );
Report( vc )[axisbox( 1 )] << Min( spec["LSL"] );Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLHola txnelson,
Gracias por el consejo. Pero lamentablemente no es la solución que busco. El cuadro del eje solicitará al usuario que introduzca el mínimo/máximo manualmente. Quiero que JSL se encargue de escalar automáticamente de acuerdo con los parámetros incorporados en las especificaciones LSL y USL sin interacción humana.
¿Existe alguna opción para hacerlo?
Re: Escalado automático del eje Y del gráfico de variabilidad basado en el límite de especificaciones USL y LSLLa respuesta simple es sí......ver
Ayuda==>Índice de secuencias de comandos==>Cuadro de eje
A continuación se muestra un ejemplo del índice de secuencias de comandos que utiliza bivariado, pero la misma funcionalidad está disponible para el gráfico de variabilidad.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
axisbox = rbiv[axis box( 1 )];
axisbox << Max( 120 );