Use for loop en el gráfico de variabilidad para varias columnasHola,
Tengo varias columnas en un conjunto de datos y quería usar un script para trazarlas en un gráfico de variabilidad para poder generar estos gráficos con configuraciones similares. Pero hay un error. ¿Alguien puede aclarar cuál debería ser la sintaxis correcta?
mi guion:
dt = tabladatosactuales();
colnames = dt << obtener nombres de columnas (numérico);
mostrar (nombres de columna);
nw = Nueva ventana("Gráficos");
for(i=5, i prueba = nombres de columnas [i];
gb = tabla de variabilidad (
Y( como columna(prueba) ) ,
X( :Grupo, :Lote, :Oblea ),
Iteración máxima (100),
Límite de conversión ( 0.00000001 ),
Abcisas de integración de números ( 128 ),
Evaluaciones de funciones numéricas (65536),
Tipo de análisis( Nombre( "Elija el mejor análisis (EMS REML Bayesian)" ) ),
Gráfico de desarrollo estándar ( 0 ),
Mostrar diagramas de caja(1),
)
);
nw<
mensaje de registro:
colnames = {Lote, Oblea, X, Y, Nombre ("4V01PC03MHVN_BF00-LT-VL_HN_11.1X1.1-VALUE_F"), Nombre ("4V01PC03MHVN_BF00-LT-VL_HN_11.1X11.1-VALUE_F"), Nombre ("4V01PC03MHVN_BF00- LT-VL_MN_11.1X0.76-VALUE_F"), Nombre("4V01PC03MHVN_BF00-LT-VL_MN_11.1X11.1-VALUE_F"), Nombre("4V01PC03MHVN_BF00-LT-VL_MNT_11.1X0.76-VALUE_F"), Nombre("4V01PC03MHVN_BF00 -LT-VL_MNT_11.1X11.1-VALUE_F"), Nombre("4V01PC04MHVP_BF00-LT-VL_HP_0.4X1.1-VALUE_F"), Nombre("4V01PC04MHVP_BF00-LT-VL_HP_11.1X1.1-VALUE_F"), Nombre(" Nombre( "4V01PC06TX5V_BF00-LT-VL_N5_11.1X11.1-VALUE_F"), Nombre ("4V01PC06TX5V_BF00-LT-VL_P5_11.1X11.1-VALUE_F"), EndTimestamp};
No encontrado en el acceso o evaluación de 'Gráfico de variabilidad', Argumento incorrecto ({., El rol requiere al menos 1 columna.} ), Gráfico de variabilidad(/*###*/Y( Como columna( prueba ) ),
X( :Grupo, :Lote, :Oblea ),
Iteración máxima (100),
Límite de conversión ( 0.00000001 ),
Abcisas de integración de números ( 128 ),
Evaluaciones de funciones numéricas (65536),
Tipo de análisis( Nombre( "Elija el mejor análisis (EMS REML Bayesian)" ) ),
Gráfico de desarrollo estándar ( 0 ),
Mostrar diagramas de caja( 1 )
)
En el siguiente script, error marcado por /*###*/
dt = Tabla de datos actuales ();
colnames = dt << obtener nombres de columnas (numérico);
Mostrar (nombres de columna);
nw = Nueva Ventana ("Gráficos");
For( i = 5, i < N elementos( nombres de columna ), i++,
prueba = nombres de columnas [i];
gb = Gráfico de variabilidad(/*###*/Y( Como columna( prueba ) ),
X( :Grupo, :Lote, :Oblea ),
Iteración máxima (100),
Límite de conversión ( 0.00000001 ),
Abcisas de integración de números ( 128 ),
Evaluaciones de funciones numéricas (65536),
Tipo de análisis( Nombre( "Elija el mejor análisis (EMS REML Bayesian)" ) ),
Gráfico de desarrollo estándar ( 0 ),
Mostrar diagramas de caja( 1 )
);
);
nw << agregar (Informe (gb));
Re: Usar bucle for en el gráfico de variabilidad para varias columnasHola, gracias por los cambios. Funcionó de la manera que yo quería.
Re: Usar bucle for en el gráfico de variabilidad para varias columnasHola,
Gracias por los consejos. Pero el consejo n. ° 1 no es aplicable porque realmente quería comenzar en 5.
Re: Usar bucle for en el gráfico de variabilidad para varias columnasHay un par de cosas que causan el error. Una es que en su ciclo For(), está inicializando i = 5, cuando asumo que desea comenzar con el primer elemento de la lista almacenada en nombres de columnas, por lo que debería ser i = 1. Lo segundo es que no necesita usar As Column(); simplemente puede usar el nombre de la variable (prueba) que almacena el nombre de la columna en cada iteración, Y(prueba).
Además, está agregando el gráfico de variabilidad fuera del ciclo For(), lo que significa que solo se agregará la última gráfica a la ventana. Desea tener la última línea de su código dentro del ciclo. ¡Espero que esto ayude!
Re: Usar bucle for en el gráfico de variabilidad para varias columnasCambié su código y creo que funcionará de la manera que usted quiere que funcione.
1. Agregué un cuadro de lista V () a su "Nueva ventana". Esto le permitirá tener un mejor control del orden de la salida que desea. Si desea que las pantallas vayan de izquierda a derecha, cambie a un cuadro de lista H().
2. Agregué el elemento "Invisible" a la tabla de variabilidad. Supongo que lo que quiere es terminar con una sola ventana sin viudas separadas para cada gráfico.
3. La columna As () no funcionaría. ¡No estoy seguro de por qué no! Sin embargo, cambiar a una función Column() funcionó. Además, eliminé la necesidad de la variable "Prueba", ya que es más limpio tener solo la referencia de la lista, ColNames[] justo en el código del gráfico de variabilidad.
4. Supongo que lo que quiere es una sola ventana con toda la salida. Su anexo al final de su código solo agregaría el último gráfico. La referencia a "gb" no es agregativa. "gb" se cambiará a cada gráfico sucesivo cada vez que se haga referencia en el bucle For(). Por lo tanto, el apéndice debe estar dentro del ciclo.
dt = Current Data Table();
colnames = dt << get column names( numeric );
Show( colnames );
nw = New Window( "Plots", myVLB = V List Box() );
For( i = 5, i < N Items( colnames ), i++,
gb = Variability Chart(
invisible,
Y( Column( colnames[i] ) ),
X( :Group, :Lot, :Wafer ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( Name( "Choose best analysis (EMS REML Bayesian)" ) ),
Std Dev Chart( 0 ),
Show Box Plots( 1 ),
);
myVLB << append( Report( gb ) );
);