establecer el límite de especificación a la propiedad de la columna por JSL: las líneas no se muestran en la tramaHola
Tengo un script que asigna límites de especificación (USL/LSL) a la propiedad de las columnas, y luego hago un gráfico de la columna, y espero
para ver las líneas de límites dibujadas en el gráfico. Lo que sucede es que los límites están establecidos correctamente en la tabla, pero no son visibles en el gráfico.
Si dibujo el mismo gráfico en esta columna manualmente después de ejecutar el script, no hay líneas nuevamente.
Si abro la ventana de propiedades de especificación de columna, veo los límites, la opción 'Mostrar línea de referencia' está activada.
solo si presiono 'Aplicar' y luego vuelvo a trazar, puedo ver las líneas en el gráfico como se esperaba. Pero no puedo hacer que funcione por script..
¿alguna idea?
(utilizando JMP PRO 15)


Modelado Estadístico AvanzadoAutomatización y secuencias de comandosAcceso a los datosLa personalización en masaIngeniería de Calidad y ProcesosventanasRe: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoJim, gracias eso hizo el truco.
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoEste JSL debería hacer el truco
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoJaime, gracias por la respuesta.Corrí y se agregan límites a la tabla.La parte con la que tengo problemas es agregar unidades a las propiedades de la columna.Cuando elimino los comentarios de mi código, la propiedad de la columna de unidades se llena, pero no con el valor deseado de pulgadas o libras.En cambio, ambos se llenan con el valor de List.No me queda claro lo que me falta en la declaración de expresión o declaración de evaluación para transferir el texto de la celda de la tabla de datos.cualquier ayuda seria
apreciado.
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoAquí hay un ejemplo simple que funciona usando su código.Si aún no funciona en sus tablas de datos, busque inconsistencias con los nombres de las columnas
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoUso un método muy similar para tomar límites de una tabla de límites para agregar límites de especificación a las propiedades de la columna.Quería probar y usar un método similar para actualizar las unidades según el valor en la tabla de límites.Actualmente comentado en el programa de código, pero cuando ejecuto obtengo un valor de "Lista" como la propiedad de la unidad en lugar de la unidad deseada.Creo que este es un problema de sintaxis, pero hasta ahora no he encontrado la sintaxis correcta para la declaración eval expr.
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoNo estoy seguro de por qué se comporta así sin las llaves porque usarlas parece ser la sintaxis correcta Ayuda de JMP - Propiedades de columna
col << Set Property( "propertyName", {argument list} );
JMP debe estar guardando información internamente, porque si ejecuta el comando SIN llaves y verifica las propiedades de la columna, se ve bien, pero si usa Copiar propiedades de columna, obtiene solo el primer argumento (porque no tiene una lista de argumentos):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
Luego, después de presionar Aplicar en la propiedad de la columna Límites de especificación, los argumentos se actualizan a la lista correcta:
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoGracias ! de hecho, agregar las llaves resolvió el problema 
¿Puedes explicar por qué es
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoParece que está aplicando los límites después de que se muestra inicialmente el gráfico.Los límites se dibujan cuando se muestra inicialmente el gráfico y, si se agregan límites después de ese punto, será necesario volver a dibujar el gráfico para que se muestren.
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoLa sintaxis parece estar un poco fuera de lugar, debe agregar {} después de los límites de especificación. Consulte el script a continuación, el peso no funcionará sin presionar Aplicar y la altura lo hará.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoGracias por la pronta respuesta ! Asumí que el código no es realmente relevante, ya que establece correctamente los límites de especificación en las propiedades de la columna.
establece LSL y USL y muestra Límites (1), pero el gráfico no los muestra a pesar de que están configurados correctamente.
Incluso si uso un código directo con números fijos, se comporta de la misma manera.
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

Solo después de presionar 'aplicar' y dibujar el gráfico nuevamente, muestra las líneas.
Re: establecer el límite de especificaciones para la propiedad de la columna por JSL: las líneas no se muestran en el gráficoHola @shlomi_bakish ,
¿Puede proporcionar un ejemplo de su código JSL? Esto podría ayudar a diagnosticar el problema que está teniendo. Mientras tanto, esta parte del código es un ejemplo de cómo puede establecer los límites de especificación para las columnas y asegurarse de que estén activadas para la representación gráfica.
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);Esto debería ayudarlo a ir en la dirección correcta. Pero, sin ver su código y comprender lo que está haciendo, es difícil ser más específico para abordar su necesidad exacta.
¡Espero que esto ayude!,
SD