Ayuda con el gráfico de superposición por obtener nombres de columnaHola a todos, espero que alguien me pueda ayudar.
Necesito crear un gráfico en el que la cantidad de columnas numéricas cambie de un momento a otro, pero al final tengo que trazar todas mis columnas numéricas en el gráfico de superposición, como se muestra en la siguiente secuencia de comandos.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Overlay Plot( X( :name ), Y( :height, :weight ), Connect Thru Missing( 1 ) );
Esto es lo que he intentado, pero los gráficos se crean por separado, me pregunto si aceptaré las instrucciones para el eje Y. Gracias por adelantado.
dt = Data Table ("Big Class");
list = dt << get column names(numeric, continuous);
show (list);
For( i = 1, i <= N Items(list), i++,
Overlay Plot(
Y( Column( list[i] ) ),
X( :name ), Connect Thru Missing( 1 ) ) );Re: Ayuda con Superposición Plot by Get Column NamesEste es también un enfoque diferente,
Gracias por el apoyo @ian_jmp y @Sra
Re: Ayuda con Superposición Plot by Get Column NamesHay 2 buenas soluciones a su pregunta. Estoy agregando esto como un FYI, para una tercera alternativa.
Me gusta trabajar con los nombres de columna como texto. Cuando tiene una lista de nombres de columna (cadena), ciertas plataformas (no todas) requieren la Lista de evaluación (), por lo que sugiero usarla pro forma (un estándar).
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mylist = dt << get column names(numeric, continuous, string);
op = Overlay Plot(Y(EvalList(mylist)), X(:name), Connect Thru Missing(1));
Re: Ayuda con Superposición Plot by Get Column NamesGracias @ gzmorgan0 Por tu respuesta, te lo agradezco.
Tengo una pregunta adicional, si el caso es que tengo varias columnas numéricas, continuas en mi tabla, pero solo quiero crear mi gráfico de superposición con algunas columnas.
¿Cuál es el mejor enfoque para seleccionar la lista de columnas de un bucle?
Digamos que quiero que el bucle seleccione solo de la columna 3 (columna 3 numérica, continúa con <= N elementos), o bucle de la columna 1 (columna 1 numérica, continúa con menos de 2 elementos N totales).
Gracias de antemano.
Re: Ayuda con Superposición Plot by Get Column NamesNo entiendo exactamente tu pregunta, así que te daré un par de consejos. Deberías leer en listas y trabajar con listas. Por ejemplo,
mylist = words("abcdefghijklmnopqrstuvwxyz","");
show(mylist); // see the log list of characters a-z
show( mylist[ 3::nitems(mylist)-2 ] ); //see log c-x
Supongo que si desea comenzar después de la columna 3, sabe cuáles podrían ser las 3 primeras columnas. Entonces, un enfoque sería obtener todos los nombres de columnas continuos y eliminar los nombres de las primeras 3 columnas.
Re: Ayuda con Superposición Plot by Get Column NamesHola @ gzmorgan0 Lo siento por no ser tan claro con mi pregunta.
Permítame tratar de explicar con mayor profundidad, algunas veces mis tablas contienen 5 o hasta 7 columnas, luego de las columnas numéricas / continuas, quiero excluir la primera columna, u otra secuencia de comandos sería excluir solo las últimas 2 columnas. cuando dije excluir, me refiero a que obtener nombres de columna puede excluirlos.
¿Hay una manera de hacerlo a través del bucle?
Otra opción es que mis columnas no deseadas (si es el caso) están siempre en la primera columna o en las últimas 2 columnas en relación con el tipo de columna (numérico, charcater, etc.), también hay una forma de seleccionar tres nombres de columna usando ¿lazo?
¡¡¡Gracias!!!
Re: Ayuda con Superposición Plot by Get Column NamesLo siento, esto todavía no es "cristal". Cuando se refiere a la primera columna, ¿es esa la primera columna en la tabla o la primera columna continua? Misma pregunta respecto a las 2 últimas columnas. Además, ¿sabe los nombres de las columnas que desea excluir? ¿Debería ser sensible a mayúsculas y minúsculas?
Tengo la sensación de que podría estar preguntando cómo omitir ciertas columnas. No sabiendo exactamente lo que está buscando, aquí hay un ejemplo que podría ayudar. nolist Es una lista de nombres conocidos para omitir.
Names Default to Here(1);
dt = Open("$sample_data/Semiconductor Capability.jmp");
cnames = dt << get column names("numeric", "String");
nolist = {"wafer", "site", "datetime"};
nw = New Window("Overlay Plots", lub = LineUpBox(ncol(3)));
For(i=1,i<=nitems(cnames), i++,
if (contains(nolist, lowercase(cnames[i]) ), continue() ); //next i
if( Col Number(column(cnames[i]) ) == 0 | Col Std Dev(column(cnames[i])) == 0, continue() ); //next i, no need to plot a constant.
//otherwise
vl = VlistBox(op = Overlay Plot(Y( Column(cnames[i])), X(:lot_id) ) );
Report(op)[OutlineBox(1)] << set title("Overlay Plot: " || cnames[i] || " vs. lot_id");
lub << append(vl);
);
Si no conoce los nombres que debe omitir, simplemente sabe que están en ciertas posiciones en la tabla, cree un nolist
//or create nolist
nolist = {};
Insert Into(nolist, Column(dt,1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)-1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)) << get name);
show(nolist);
También puede eliminar estos nombres de cnames. [No estoy seguro exactamente de dónde provienen estas posiciones.] Si solo desea eliminar las 1 y las 2 últimas columnas continuas, simplemente obtenga todas las columnas continuas como se muestra en el script, luego
cnames = cnames[ 2::nitems(cnames)-2 ];
ahora los nombres ya no tienen esos valores.
Re: Ayuda con Superposición Plot by Get Column NamesGracias @ gzmorgan0 con el nolist = {}; y cnames = cnames [2 :: nitems (cnames) -2]; Tengo las opciones que estaba buscando.
Lo siento por no ser tan claro.
Solo quería averiguar cómo obtener los nombres de columna (independientemente del tipo de columna) para columnas específicas en función de su posición.
Su respuesta ya me ayudó a solucionar mi preocupación.
Gracias de nuevo.
Re: Ayuda con Superposición Plot by Get Column NamesEl argumento de Y (...) parece no evaluado en tiempo de ejecución por el Parcela de superposición plataforma.
Aquí hay una forma de forzar el reemplazo de la variable de lista con una lista explícita de columnas antes de crear la gráfica:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
list = dt << get column names(numeric, continuous);
op = Expr(
Overlay Plot(Y((Expr(list))), X(:name), Connect Thru Missing(1))
);
Eval(Eval Expr(op));Re: Ayuda con Superposición Plot by Get Column NamesPara tu información, esto también funciona:
myOP = dt << Overlay Plot(Y(dt << get column names(numeric, continuous)), X(:name), Connect Thru Missing(1));