Hola a todos,
Estoy tratando de escribir un código JSL que toma datos de una tabla de datos y los muestra gráficamente para que el usuario elija para un análisis más detallado. Lo que me gustaría obtener es algo así como una combinación entre el informe de Eigenvalue de la plataforma PCA y el informe de resumen de efectos de Fit Model Platform. Me gustaría que la imagen se pareciera al informe de PCA, pero la funcionalidad (es decir, poder seleccionar una fila) del informe de resumen de efectos.
Informe de valor propio de PCA (cómo quiero que se vea):

Informe de resumen de efecto de modelo de ajuste (la funcionalidad que me gustaría). En esta plataforma, uno puede seleccionar una fila en el Cuadro de lista () y elegir "eliminar" o "agregar". No quiero eliminar ni agregar, pero sí quiero que el usuario pueda seleccionar la fila (de la salida anterior):

Adjunté la tabla de datos con la que estoy trabajando, esta es la "Tabla de datos actual ()" en el código JSL a continuación. El código JSL a continuación me puede ayudar en parte, pero no es exactamente lo que quiero.
Names Default To Here( 1 );
PC_dt = Current Data Table();
PC_n = {};
PC_eigv = {};
PC_per = {};
PC_cump = {};
For( i = 1, i <= N Rows( PC_dt ), i++,
Insert Into( PC_n, PC_dt:"Number"n[i] );
Insert Into( PC_eigv, Round( PC_dt:"Eigenvalue"n[i], 5 ) );
Insert Into( PC_per, Round( PC_dt:"Percent"n[i], 5 ) );
Insert Into( PC_cump, Round( PC_dt:"cumulative Percent"n[i], 5 ) );
);
PC_Rpt_win = New Window( "PC Results",
Outline Box( "Eigenvalues & cumulative Percent",
//List Box(
//List Box(
Table Box(
Number Col Box( "Number", Eval List( PC_n ) ),
Number Col Box( "Eigenvalue", Eval List( PC_eigv ), <<SET format=""></SET>
Con las secciones comentadas, obtengo el siguiente resultado del código (aunque no se puede seleccionar ninguna fila):

Realmente no sé si necesito toda la parte del código del cuadro anterior al esquema donde genero listas para las PC y los valores propios, etc. Pero, parecía la forma lógica de hacerlo, ya que estoy tratando con columnas en una tabla de datos y las funciones requieren listas. Funciona, incluso si no es necesario.
</CODE></P><P> </P><P>Si incluyo una o ambas llamadas de List Box () comentadas alrededor de Table Box (), obtengo lo siguiente. Las filas se pueden seleccionar, pero no aparece nada:</P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DiedrichSchmidt_3-1635336043749.png" style="width: 400px;"><IMG src="https://us.v-cdn.net/6038925/uploads/images/37045iA319787974999980/DiedrichSchmidt_3-1635336043749.png" role="button" title="DiedrichSchmidt_3-1635336043749.png" alt="DiedrichSchmidt_3-1635336043749.png" /></SPAN></P><P>No estoy seguro de qué estoy haciendo mal, y Scripting Index tiene ejemplos limitados de cómo usar correctamente la llamada List Box () con un Table Box (). Intenté seguir la estructura de árbol de la ventana del informe de la plataforma Fit Model, pero no funciona.</P><P> </P><P>En resumen, me gustaría corregir lo siguiente en mi script:</P><OL><LI>Corrija el recuadro Plot Col para que tenga la curva de porcentaje acumulativo como muestra el informe de PC (primera imagen de arriba). Esto no es tan crítico como el punto 2.</LI><LI>Corrija la llamada List Box () alrededor del Table Box () para que el usuario pueda seleccionar una fila en el List Box que luego se enviará a otra función para un análisis más detallado.</LI></OL><P>¡Gracias por cualquier sugerencia y ayuda!</P><P>DS</P></LINGO-BODY><LINGO-LABS id="lingo-labs-430708" slang="en-US"><LINGO-LABEL>Scripting</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-430729" slang="en-US">Re: Ayuda de scripting para Table Box () dentro de un List Box ()</LINGO-SUB><LINGO-BODY id="lingo-body-430729" slang="en-US"><P>¿Existe una necesidad específica de List Box ()? Puedes usar<CODE class=""> << Establecer filas seleccionables (); para hacer que las filas se puedan seleccionar en Table Box y luego usar << establecer la función de cambio de fila (Función ({esto},); para agregar función a la selección.
Ejemplo de Scripting Index:
Names Default To Here(1);
New Window("Mountains",
tb = Table Box(
String Col Box("Mountain", {"K2", "Delphi", "Kilimanjaro", "Grand Teton"}),
Number Col Box("Elevation (meters)", {8611, 681, 5895, 4199}),
Plot Col Box("", {8611, 681, 5895, 4199})
)
);
tb << Set Selectable Rows();
tb << set row change function(Function({this}, Print(this << get selected rows)));
Hola @jthi ,
Gracias por tu rápida retroalimentación. Lo había intentado antes, pero no había pasado nada, así que lo abandoné por otra ruta, pero no conducía a ninguna parte. Volví y lo probé, y funciona, ¡gracias! La funcionalidad agregada es útil. Eso definitivamente resolvió el punto 2, que era el más importante. Si tiene alguna idea de cómo arreglar el elemento 1, sería genial, pero no esencial.
Esto está relacionado, pero tal vez otro hilo (avíseme y lo volveré a publicar como otro hilo).
¿Sabe cómo usar JSL para guardar los valores DModX y T² de la plataforma PCA en la tabla de datos? Todo esto es para intentar automatizar este proceso, o al menos sacar varios de los otros pasos y simplemente darle al usuario los conceptos básicos para decidir la cantidad de PC que luego usará para guardar las fórmulas DModX y T².
¡Gracias!,
DS
Hola @jthi ,
Bueno, olvídate de la parte sobre DModX, el Scripting Index me mostró cómo hacerlo y funciona como se esperaba. Tiene un ejemplo para Save T Square, pero eso no funciona. Lo seguiré haciendo. Creo que necesito hacer referencia al cuadro de esquema correcto.
¡Gracias!,
DS
Para el artículo 1:
Supongo que hay alguna otra / mejor manera de hacer esto, pero encontré mensajes << Inferior y << Superior (requiere que se especifique Inferior). Con << Inferior, puede obtener los primeros valores de la columna acumulativa y luego establecerlos en Trazar cuadro de columna con Inferior
pcb << Lower(ncb << get as matrix);

Con su código se vería así (agregue referencias y utilícelas):
Ver más...Names Default To Here( 1 );
PC_dt = Current Data Table();
PC_n = {};
PC_eigv = {};
PC_per = {};
PC_cump = {};
For( i = 1, i <= N Rows( PC_dt ), i++,
Insert Into( PC_n, PC_dt:"Number"n[i] );
Insert Into( PC_eigv, Round( PC_dt:"Eigenvalue"n[i], 5 ) );
Insert Into( PC_per, Round( PC_dt:"Percent"n[i], 5 ) );
Insert Into( PC_cump, Round( PC_dt:"cumulative Percent"n[i], 5 ) );
);
PC_Rpt_win = New Window( "PC Results",
Outline Box( "Eigenvalues & cumulative Percent",
//List Box(
//List Box(
Table Box(
Number Col Box( "Number", Eval List( PC_n ) ),
Number Col Box( "Eigenvalue", Eval List( PC_eigv ), <<SET format=""></SET>Para obtener valores:
A veces, puede ser suficiente usar Convertir en tabla de datos (dependiendo de la plataforma y si está usando Por variable):

y luego revisando desde la tabla resultante el script de la tabla:


A veces, eso brinda una forma bastante rápida de obtener referencias para corregir los cuadros de visualización.
Hola @jthi ,
Gracias de nuevo por su rápida respuesta y ayuda. Sí, <
Ahora, mi único problema es cómo salvar T². Cada vez que trato de abordar el cuadro de esquema en cuestión desde la plataforma PCA, aparece un error de registro que dice que el cuadro de visualización no reconoce <
¡Gracias!,
SD