Ciao a tutti,
Sto cercando di scrivere del codice JSL che prenda i dati da una tabella di dati e li visualizzi graficamente affinché l'utente possa scegliere per ulteriori analisi. Quello che mi piacerebbe ottenere è qualcosa come un mix tra il report Eigenvalue dalla piattaforma PCA e il report Effect Summary dalla piattaforma Fit Model. Mi piacerebbe che l'immagine assomigli al rapporto PCA, ma la funzionalità (cioè essere in grado di selezionare una riga) del rapporto Riepilogo effetti.
Rapporto sugli autovalori PCA (come voglio che appaia):

Rapporto di riepilogo dell'effetto modello di adattamento (la funzionalità che vorrei). In questa piattaforma è possibile selezionare una riga nella casella di riepilogo() e scegliere di "rimuovere" o "aggiungere". Non voglio rimuovere o aggiungere, ma voglio che l'utente sia in grado di selezionare la riga (dall'output sopra):

Ho allegato la tabella dati con cui sto lavorando, questa è la "Current Data Table()" nel codice JSL di seguito. Il codice JSL di seguito può farmi parte del percorso, ma non è esattamente quello che voglio.
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 le sezioni commentate ottengo il seguente output dal codice (nessuna riga è selezionabile, però):

Non so davvero se ho bisogno dell'intera porzione pre-Outline del codice in cui genero elenchi per i PC e gli autovalori, ecc. Ma mi sembrava il modo logico per farlo dato che ho a che fare con le colonne in una tabella dati e le funzioni richiedono elenchi. Funziona, anche se non necessario.
</CODE></P><P> </P><P>Se includo una o entrambe le chiamate List Box() commentate intorno alla Table Box(), ottengo quanto segue. Le righe sono selezionabili, ma non viene visualizzato nulla:</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>Non sono sicuro di cosa sto sbagliando e lo Scripting Index ha esempi limitati di come utilizzare correttamente la chiamata List Box() con una Table Box(). Ho provato a seguire la struttura ad albero dalla finestra del report della piattaforma Fit Model, ma non funziona.</P><P> </P><P>In sintesi, vorrei correggere quanto segue nel mio script:</P><OL><LI>Correggi il riquadro Plot Col in modo che abbia la curva percentuale cumulativa come mostra il rapporto del PC (prima immagine sopra). Questo non è così critico come il punto 2.</LI><LI>Correggere la chiamata List Box() attorno alla Table Box() in modo che l'utente possa selezionare una riga nella List Box che verrà quindi inviata a un'altra funzione per ulteriori analisi.</LI></OL><P>Grazie per eventuali suggerimenti e aiuto!,</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: Guida allo scripting per Table Box() all'interno di una casella di riepilogo()</LINGO-SUB><LINGO-BODY id="lingo-body-430729" slang="en-US"><P>C'è una necessità specifica per List Box()? Puoi usare<CODE class=""> << Imposta righe selezionabili(); per rendere le righe selezionabili in Table Box e quindi utilizzare << imposta la funzione di cambio riga (Funzione ({questo}, ); per aggiungere una funzione alla selezione.
Esempio da 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)));
Ciao @jthi ,
Grazie per il tuo rapido feedback. Ci avevo provato prima, ma non era successo niente, quindi l'ho abbandonata per un'altra via, ma non portava da nessuna parte. Sono tornato indietro e l'ho provato, e funziona, grazie! La funzionalità aggiunta è utile. Questo ha definitivamente risolto il punto 2, che era il più importante. Se c'è qualche idea su come riparare l'articolo 1, sarebbe fantastico, ma non essenziale.
Questo è correlato, ma forse un altro thread (fammelo sapere e lo riposterò come un altro thread).
Sai come usare JSL per salvare i valori DModX e T² dalla piattaforma PCA alla tabella dati? Tutto questo per cercare di automatizzare questo processo, o almeno eseguire molti degli altri passaggi e fornire all'utente le basi per decidere il numero di PC da utilizzare per salvare le formule DModX e T².
Grazie!,
DS
Ciao @jthi ,
Bene, dimentica la parte su DModX, lo Scripting Index mi ha mostrato come farlo e funziona come previsto. Ha un esempio per Save T Square, ma non funziona. Lo terrò presente. Penso di dover fare riferimento alla casella Outline giusta.
Grazie!,
DS
Per l'articolo 1:
Immagino che ci sia un altro / migliore modo per farlo, ma ho trovato i messaggi << Lower e << Upper (richiede che sia specificato Lower). Con << Lower è possibile ottenere i primi valori dalla colonna cumulativa e quindi impostarli su Plot Col Box con Lower
pcb << Lower(ncb << get as matrix);

Con il tuo codice sembrerebbe qualcosa del genere (aggiungi riferimenti e usa quelli):
Visualizza di più...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>Per ottenere valori:
A volte potrebbe essere sufficiente utilizzare Make into data table (a seconda della piattaforma e se si utilizza By variabile):

e quindi controllando dalla tabella risultante lo script della tabella:


A volte ciò offre un modo abbastanza rapido per ottenere riferimenti alle caselle di visualizzazione corrette.
Ciao @jthi ,
Grazie ancora per il tuo rapido feedback e aiuto. Sì, il <
Ora, il mio unico problema è come risparmiare T². Ogni volta che provo a indirizzare la casella di contorno in questione dalla piattaforma PCA, viene visualizzato un errore di registro che dice che la casella di visualizzazione non riconosce <
Grazie!,
ds