Utilizzo delle variabili nel comando SendToReport(Dispatch(...)).<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti,
Sto scrivendo uno script JMP che crea una finestra con caselle di controllo e menu a discesa. Questi menu vengono utilizzati per selezionare le condizioni che possono poi essere utilizzate per eseguire report e generare grafici. Uno dei grafici che sto realizzando ha un numero diverso di linee a seconda del numero di caselle di controllo selezionate. Sono riuscito a generare con successo il grafico con tutte le linee, indipendentemente dalle caselle di controllo selezionate. Il problema che sto riscontrando riguarda la leggenda. Il primo set di dati viene sempre visualizzato con i punti visualizzati nella legenda e nella linea. Tutti gli altri set di dati su quel grafico hanno online la loro linea rappresentata nella legenda. Per risolvere questo problema, normalmente farei doppio clic sulla legenda, deselezionerei manualmente i punti sulla legenda che non desidero vengano visualizzati, quindi copierei lo script per far sì che ciò avvenga automaticamente. Quando ci sono 4 serie di dati sul grafico, lo script sarà simile a questo dopo aver apportato le modifiche alla legendbox:
Invia al rapporto (
Spedizione(
{},
"400",
LegendBox,
{Posizione( {-1, -3, -3, -3, 0, 1, 2, 3} )}
)
... //(altri comandi Dispatch())
)
Ho altri comandi che vanno al grafico come le modifiche al nome dell'etichetta dell'asse, quindi questo appare tra gli altri comandi Dispatch() all'interno del comando SendToReport(). Il problema che sto riscontrando è che non riesco a modificare l'elenco all'interno del comando Postion() in base al numero di caselle di controllo selezionate. Posso codificare l'elenco corretto, ma il codice funziona solo per quel numero di caselle di controllo selezionate. Ad esempio, se imposto l'elenco come {-1, -3, -3, 0, 1, 2}, il codice funziona correttamente solo quando sono selezionate 3 caselle di controllo. Ho creato una variabile che cambia nell'elenco corretto a seconda del numero di caselle selezionate (e ho verificato che venga assegnata correttamente) ma quando inserisco la variabile all'interno della funzione Position() il codice non apporta la modifica che desidero A. Il codice seguente assegna l'elenco corretto alla variabile PL a seconda di quante caselle di controllo vengono selezionate (le variabili all'interno della funzione SUM() rappresentano gli output delle caselle di controllo).
PL = Se(
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 1, {-1, 0 },
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 2, {-1, -3, 0, 1},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 3, {-1, -3, -3, 0, 1, 2},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 4, {-1, -3, -3, -3, 0, 1, 2, 3},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 5, {-1, -3, -3, -3, -3, 0, 1, 2, 3, 4},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 6, {-1, -3, -3, -3, -3, -3, 0, 1, 2, 3, 4 , 5},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 7, {-1, -3, -3, -3, -3, -3, -3, 0, 1, 2, 3, 4, 5, 6},
Somma(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 8, {-1, -3, -3, -3, -3, -3, -3, -3, 0, 1 , 2, 3, 4, 5, 6, 7},
);
Ho verificato che questo codice stia assegnando l'elenco corretto alla variabile. Quando inserisco la variabile come segue, non rimuove l'etichetta dei punti dalla legenda come vorrei, e quando copio lo script del grafico che ho generato manca il comando Dispatch() nella legendbox .
Spedizione(
{},
"400",
LegendBox,
{Posizione(PL)}
)
Ho già utilizzato variabili in modi simili in precedenza, ma faccio sempre riferimento a un numero nell'elenco anziché provare a inserire un intero elenco (ad esempio PL[1]). Ho provato molte varianti di questo ma nessuna ha funzionato finora (PL[], {PL}, {PL[]}).
Per favore aiutami a capire cosa sto facendo di sbagliato. Per favore fatemi sapere se qualcosa non è chiaro e posso fornire ulteriori dettagli necessari per aiutare a rispondere alla domanda. Questo è un problema molto minore nel grande schema delle cose, ma mi sta facendo impazzire e ho difficoltà a superarlo senza trovare una soluzione. Aiuto!
Ri: Utilizzo delle variabili nel comando SendToReport(Dispatch(...)).Sei il benvenuto!
Ri: Utilizzo delle variabili nel comando SendToReport(Dispatch(...)).Grazie per la tua risposta Ian. Ho capito cosa stava succedendo finché non è apparso msTBD. Presumo che questa sia la variabile che cambierà a seconda delle caselle di controllo selezionate, ma non riesco a vedere dove entra in gioco il numero di caselle di controllo.
Ri: Utilizzo delle variabili nel comando SendToReport(Dispatch(...)).Ciao Filippo,
Questa soluzione ha funzionato per me! Grazie mille per il tuo aiuto!!
Ri: Utilizzo delle variabili nel comando SendToReport(Dispatch(...)). jbakri21
In aggiunta al suggerimento di Ian. Ecco un altro approccio.
Innanzitutto, se hai un'istruzione IF come te, utilizzerei invece Choose(). Gli argomenti delle condizioni sono una sequenza di numeri interi che iniziano da 1, quindi le clausole di uguaglianza ( expr==1, expr==2, expr==3) sono integrate. (Vedi Riferimento alla sintassi JSL per ulteriori informazioni).
Detto questo, questa sarebbe la tua nuova dichiarazione condizionale:
PL = Scegliere ( Somma (IW27, II09, II44, II08, II42, IW29, CC23, IW24),
{- 1 , 0 }, // 1
{- 1 , - 3 , 0 , 1 }, // 2
{- 1 , - 3 , - 3 , 0 , 1 , 2 }, // 3
{- 1 , - 3 , - 3 , - 3 , 0 , 1 , 2 , 3 }, // 4
{- 1 , - 3 , - 3 , - 3 , - 3 , 0 , 1 , 2 , 3 , 4 }, // 5
{- 1 , - 3 , - 3 , - 3 , - 3 , - 3 , 0 , 1 , 2 , 3 , 4 , 5 }, // 6
{- 1 , - 3 , - 3 , - 3 , - 3 , - 3 , - 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 }, // 7
{- 1 , - 3 , - 3 , - 3 , - 3 , - 3 , - 3 , - 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }, // 8
) ;
Per utilizzare PL all'interno di un'altra istruzione JSL, come stai cercando di fare con Dispatch(), la variabile parametro deve essere racchiusa all'interno di Expr(). COSÌ,
Spedizione(
{},
"400",
LegendBox,
{Posizione( Espr ( PL) )}
)
Ciò consente di valutare (o espandere) i contenuti di PL, Prima si valuta l'intera cosa. Affinché ciò funzioni, è necessario racchiudere l'intera funzione grafica con Eval( Eval Expr ()). Un esempio completo appare di seguito:
dt = Aprire ( "$SAMPLE_DATA/Turismo australiano.JMP" );
PL = { 0 , - 1 , 1 , - 1 , 2 , - 1 };
//PL = {-1, 0, -1, 1, -1, 2};
Val (
Espr.Val (
dt << Costruttore di grafici (
Mostra pannello di controllo( 0 ),
Variabili(
X(:Data),
Y(: Nome ( "Entrate ($'000)" ) ),
Y(: Nome ( "Tasso di occupazione dei letti (%)" ) ),
Y(: Nome ( "Durata media del soggiorno (giorni)" ) )
),
Elementi( Posizione( 1 , 1 ), Punti( X, Y, Legenda( 4 ) ), Più fluido( X, Y, Legenda( 3 ) ) ),
Elementi( Posizione( 1 , 2 ), Punti( X, Y, Legenda( 1 ) ), Più fluido( X, Y, Legenda( 2 ) ) ),
Elementi( Posizione( 1 , 3 ), Punti( X, Y, Legenda( 6 ) ), Più fluido( X, Y, Legenda( 5 ) ) ),
Invia al rapporto (
Spedizione ({}, "titolo del grafico" , TextEditBox, {Imposta testo( "Tendenze turistiche" )} ),
Spedizione ({}, "400" , LegendBox, {Posizione( Espr (PL))})
)
)
)
);
Spero che questo ti aiuti!
Ri: Utilizzo delle variabili nel comando SendToReport(Dispatch(...)).(Adattando un esempio più semplice dallo Scripting Index) probabilmente dovrai utilizzare questo tipo di approccio (o forse una leggera variante):
Nomi predefiniti qui ( 1 ) ;
//Questo messaggio si applica a tutti gli oggetti casella di visualizzazione
Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
biv = bivariato ( sì ( : peso ) , X ( : altezza ) ) ;
rbiv = biv << rapporto ;
SM = 5 ;
addMarker = Espr ( rbiv << Spedizione ( {} , "Trama di Bivar" , FrameBox , { Dimensione del contrassegno ( msTBD )} ) ) ;
SostituisciInto ( addMarker , Espr ( msTBD ) , SM ) ;
addMarker ;