Problema nello scripting del commutatore di colonne utilizzando le variabili<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salve, sto riscontrando un problema con lo scripting del commutatore di colonna dalle variabili di colonna ottenute dalle caselle di visualizzazione della GUI.Il mio esempio qui è con il generatore di grafici, ma ho provato un'altra piattaforma con risultati simili. Non so se è a causa del modo in cui ottengo i nomi delle colonne (obj << get items()), quindi ho incluso tutto nel file jsl allegato.Ciò che dovrebbe accadere è che il generatore di grafici dovrebbe caricarsi senza errori, la colonna "Y" dovrebbe essere nel ruolo Y, quindi "Y" più le mie due colonne fittizie aggiunte "temp" e "temp2" dovrebbero essere nel commutatore di colonne. Ma nel primo argomento di Column Switcher(), sembra che piaccia solo aver digitato del testo lì dentro. Se digito il testo "Y" o ":Y" funziona bene, ma non ho trovato un modo per massaggiare la mia variabile di colonna contenente "Y" in modo che funzioni. Quando utilizzo la variabile, genera un errore.
Ecco uno snippet di codice e ho allegato uno script ridotto che aprirà i dati di esempio, genererà una GUI autopopolata (basta fare clic su OK) e puoi vedere come funzionerà semplicemente digitando i nomi delle colonne, ma i miei molti i tentativi con le variabili non lo faranno. Sto facendo qualcosa di sbagliato o è un bug? Se sì, esiste una soluzione alternativa? Sto utilizzando JMP 11.2.0.
Nota: questo frammento viene mostrato solo come riferimento. Se vuoi eseguirlo, esegui l'intero file allegato. yParamNames è un elenco contenente i parametri da tracciare."Y" è la prima colonna in questo elenco.
Costruttore di grafici(
Taglia (570, 559),
Variabili( X( colonna(dtDataOrig,tempName[1]) ), Y( colonna(dtDataOrig,yParamNames[1]) ), Overlay( colonna(dtDataOrig, partIdName[1]) ) ),
Elementi(
Linea (X, Y, Legenda (13), Ordine riga (0), Statistica riepilogativa ("Media"))
),
Commutatore di colonna(
//"Y", // digitare il testo del nome della colonna funziona
// non funziona
//come colonna(dtDataOrig, Y),
//come colonna(:Y),
//come colonna(Y),
//colonna(Y),
//colonna(:Y),
yParamNames[1], // <---- Penso che funzionerebbe e sarebbe l'implementazione più semplice, ma non riesco a fargli accettare una variabile.
yParamNames
)
);
Grazie,
Mike
Ri: Problema nello scripting del commutatore di colonna utilizzando le variabiliIl problema segnalato qui risale a qualche anno fa, ma vorrei confermare che Column Switcher ora valuta i suoi argomenti come dovrebbe, quindi i clienti non dovrebbero più dover aggirare questo problema. Dovrebbe funzionare correttamente in JMP 13 e versioni successive.
Ri: Problema nello scripting del commutatore di colonna utilizzando le variabiliGrazie David, funziona perfettamente.Mi chiedevo se avrei dovuto provare la tecnica Eval(Parse(Eval Insert())), ma non avrei pensato di usarla dopo aver prima creato l'oggetto del generatore di grafici.
Grazie anche a PMroz per il tuo contributo... Questa sceneggiatura è stata una tua idea in realtà.All'ultimo Discover Summit, avevo chiesto di mostrare i dati di caratterizzazione della temperatura in un diagramma a dispersione, in sostituzione dei miei script Excel, e tu mi avevi suggerito un generatore di grafici con commutatore di colonne. Funziona meravigliosamente. Grazie!
-Mike
Ri: Problema nello scripting del commutatore di colonna utilizzando le variabiliProva a rimuovere il commutatore di colonne dalla funzione Costruttore di grafici e a crearlo utilizzando un messaggio:
gb = Costruttore di grafici(
Misurare(...),
Variabili( ... ),
Elementi( ... )
);
Val ( Analizzare ( Inserisci valutazione ( "\[
gb <
]\" ))) ;
La sintassi dell'ultimo pezzo non è facile da spiegare in dettaglio ma è facile da usare.Utilizza lo stesso principio delineato da Peter ma con una sintassi che non richiede sequenze di escape per creare la stringa.
È utile comprendere la sequenza utilizzata per creare quest'ultimo pezzo di codice.Inizi con questo schema:
Val ( Analizzare ( Inserisci valutazione ( "\[
]\" ))) ;
scrivi (o copi) il tuo codice JSL all'interno di questo pattern:
gb << Commutatore di colonna( yParamNames[1], yParamNames )
Per indicare che ci sono variabili che devono essere valutate dinamicamente, virgolette con il simbolo 'accento circonflesso': ^variabile^
Ri: Problema nello scripting del commutatore di colonna utilizzando le variabiliE' questo quello che avevi in mente? Ho provato questo e si comporta ancora allo stesso modo.
stra = "Costruttore di grafici(
Taglia (570, 559),
Variabili( X( colonna(dtDataOrig,tempName[1]) ), Y( colonna(dtDataOrig,yParamNames[1]) ), Overlay( colonna(dtDataOrig, partIdName[1]) ) ),
Elementi(
Linea( X, Y, Legenda( 13 ), Ordine riga( 0 ), Statistica riassuntiva( \!"Media\!" ) )
),
Commutatore di colonna(
//yParamNames[1],
:Sì,
yParamNames
)
);" ;
eval ( analizzare ( stra )) ;
Ri: Problema nello scripting del commutatore di colonna utilizzando le variabiliA volte le variabili non funzionano direttamente in JSL.Costruisci il codice del generatore di grafici in modo dinamico come una stringa che sai funzionerà ed eseguilo con eval(parse()).
dt = aprire ( "$dati_campione\big class.jmp" ) ;
stra = "Costruttore di grafici(
Mostra Pannello di controllo( 0 ),
Variabili (X(:peso), Y(:altezza)),
Elementi(
Punti( X, Y, Legenda( 1 ), Jitter( 1 ) ),
Linea di adattamento(
X,
Sì,
Legenda( 4 ),
Fiducia nell'adattamento( 1 ),
Confidenza della previsione( 0 ),
Grado( \!"Lineare\!" ),
Equazione( 0 ),
Errore quadratico medio (0),
R²( 0 )
)
)
)" ;
eval ( analizzare ( stra )) ;