¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA utilizando categorías de nombre de columna?El siguiente script traza algunas columnas (múltiples parámetros en el eje Y) con nombres de columna que comienzan con P en Graph Builder. Quiero trazar simultáneamente algunas otras columnas con nombres de columna que comiencen con N en la siguiente PÁGINA (comando comentado en mi script a continuación).
En la siguiente PÁGINA me gustaría trazar algunas otras columnas con nombres de columna que comiencen con, digamos, V, etc.
La información de la categoría de la columna puede venir predefinida en una tabla de datos separada o en cualquier otra forma, tal vez una lista (soy flexible en eso). La pregunta es si esto es factible a través de JSL y, de ser así, ¿cómo?
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
Automatización y secuencias de comandosventanasRe: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?La página se usa para agrupaciones basadas en filas, por lo que no se puede usar para lo que desea hacer. Podría tener una lista de columnas para cada grupo y luego recorrer esa lista mientras agrega creadores de gráficos separados a una nueva ventana con el cuadro V List, por ejemplo.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Incluso reformatear la tabla de datos no ayuda: los grupos Y individuales muestran todos los elementos:

Si se trata solo de dividir los subgrupos de columnas, podría usar un Filtro de datos en lugar de Página :

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@hogi @jthi DE ACUERDO. Gracias. Una idea alternativa sería colocar/enviar la primera ventana del generador de gráficos con un conjunto de columnas trazadas en una ventana de diario, el siguiente conjunto de columnas nuevas trazadas debajo de la primera y así sucesivamente y luego cerrar las ventanas de gráficos abiertas y las tablas de datos asociadas. ¿Cómo hacer esto a través de JSL?
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Cree una lista de listas que contengan las columnas que le interesan y revíselas mientras crea creadores de gráficos y los agrega al cuadro de lista diario/v. ¿Todas las columnas tienen el mismo tamaño o cambia la cantidad del eje Y?
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Aquí hay una opción, pero esta no es la única que puedes usar.
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Si tiene diferentes columnas para cada caso/grupo, deberá agregar el JSL para cambiar el valor de "my_group" para cada cambio.
Probablemente pueda hacerlo agregando un For Each() adicional fuera del For Each actual ({my_group), donde cambia el valor de my_group antes de volver a ingresar al For Each() actual.
Le sugiero que lo intente y, si tiene más problemas, regrese a la comunidad con más preguntas.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@jthi El número de columnas trazadas en el eje y será diferente para cada caso/grupo.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@jthi @txnelson Gracias.
Mis parámetros para trazar se agrupan como en la siguiente tabla. El objetivo es agregar cada grupo debajo del otro en el diario. Además, me gustaría que la entrada del grupo fuera el título del gráfico para cada uno.¿Cómo modificar el JSL anterior en este caso?

Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?En su caso, usaría una matriz asociativa en la que la clave sería el nombre del grupo y los valores serían una lista de parámetros (columnas). Luego recorra esta matriz asociativa usando For Each mientras construye su diario.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@txnelson @hogi . Gracias por tus sugerencias. Vuelvo a abordar este tema después de un breve descanso.
@jthi Ejecutando esta parte de tu script en mi JMP 16.2
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);da

es decir
{"PNP1", "PNP2", "PNP3"} y
{"NPN3", "NPN2", "NPN1", "NPN4"}no están trazados en el eje y como mencioné en mi primera publicación (es decir, uno encima del otro con líneas de referencia de límite de especificación visibles) y en dos gráficos separados.
Como se mencionó anteriormente, mis parámetros para trazar se agrupan como en la siguiente tabla separada
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);Me gustaría que los parámetros de cada gráfico se agruparan por la entrada en la columna Grupo de la tabla anterior.
por ejemplo, el gráfico superior tiene un mosaico de corriente continua con "PNP1", "PNP2", "PNP3" y "PNP6" trazado en el eje y y debajo de él el siguiente gráfico con título C.A. con "NPN2", "NPN3", "NPN1" y "NPN4" trazados y finalmente el tercer gráfico en la parte inferior con el título "RF" con "INV2" y "INV4 " trazado en el eje y.
¿Podría obtener ayuda con el enfoque de matriz asociativa para continuar? De esta manera puedo obtener el único. Grupos , pero como conseguir el asociado Parámetros (use Obtener filas donde ()) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi , prefiero la opción de ventana "recolector" además de la revista, ya que nos da más flexibilidad dependiendo de lo que quiero ver)
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Usando JMP 16, pude recrear el problema que estás viendo.No pude usar Agregar variables, etc. para obtener los resultados que desea.Sin embargo, al utilizar una técnica en la que Graph Builder JSL se crea en una variable de cadena y luego se ejecuta, pude obtener los diagramas de caja.

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@txnelson Esto funciona en 16.2 (JMP se queja de errores de sintaxis pero aún traza el gráfico).
Si tengo otra lista
paraGroupList = {"DC", "AC"};¿Cómo asigno? corriente continua como título del gráfico (actualmente PNP1 y 2 más frente a lot_id ) al trazar (gráfico superior)
{"PNP1", "PNP2", "PNP3"}y C.A. como título del gráfico (actualmente NPN3 y 3 más frente a lot_id ) para cuando se traza (gráfico inferior)?
{"NPN3", "NPN2", "NPN1", "NPN4"}Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Ejecute el gráfico.
Haga clic en el título y cámbielo.
Luego vaya al triángulo rojo y seleccione guardar el script.
Mire el script y verá el JSL y cómo cambió el título.
Adoptelo en su script.
Le recomiendo encarecidamente que se tome el tiempo de leer la Guía de secuencias de comandos.Acelerará tu aprendizaje de JSL.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@txnelson Gracias, descubrí cómo hacer el título del gráfico.
¿Cómo salir del crear_grafo funcionar si ycolista ¿esta vacio?
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?use la función Longitud() para verificar si la lista tiene alguna entrada y luego omita el código;
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@txnelson Gracias.Parece que no puedo usar romper () dentro de mi función de trazado si se usa dentro de un bucle for. Veré qué opciones tengo.
Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Simplemente haga la evaluación necesaria y, si no se cumple, omita el código.Vea abajo:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?@txnelson Gracias. Al ejecutar el script me aparecen errores (en JMP 16.2) de los que no puedo deshacerme.

Re: ¿Se pueden trazar columnas en el generador de gráficos y separarlas por PÁGINA usando categorías de nombre de columna?Lo siento, corrí a mi respuesta anterior.El siguiente JSL omitirá la creación del gráfico si my_group está vacío
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);