Tutto,
Ho un problema che probabilmente nasce dalla mancanza di comprensione di come funzionano le cose in JSL.
Quindi, eccolo qui:
Ho un'app che traccia alcuni grafici tramite Graph Builder e li inserisce in una nuova finestra con diverse schede.
No, devo fare quanto segue:
- Generatore di grafici di grafici:
GrBld = Graph Builder(
blah-blah-blah
);
- Quindi devo ottenere un riferimento al rapporto:
reportGrBld = GrBld<<Report();
- Quindi solo io posso iniziare ad assemblare la mia finestra a schede:
tabPlot1 = Tab Page Box("GraphBuilder plot", reportGrBld);
tabPlot2 = Tab Page Box("Something else", someOtherReport);
tabPlot3...
...
tabbedResults = Tab Box(tabPlot1, tabPlot2, tabPlot3, tabPlot4);
New Window("Results", tabbedResults);
Funziona tutto bene, con un'eccezione: le trame diventano statiche. Quindi, non posso utilizzare tutti i vantaggi di GraphBuilder o di qualsiasi altra piattaforma grafica, ovvero se faccio clic su un elemento in Legend, non evidenzierà quei punti sulla trama. Se questo report è Tabulate - la tabella sarà statica, tutti i filtri che ho creato tramite script non verranno visualizzati, ecc.
Posso fare clic sul triangolo rosso e selezionare "riesegui script" e tutto ciò che appare, ma non nella finestra a schede assemblata.
Ora, se dico solo:
tabPlot1 = Tab Page Box("GraphBuilder plot", GrBld);
tabPlot2 = Tab Page Box("Something else", someOtherReport);
tabPlot3...
...
tabbedResults = Tab Box(tabPlot1, tabPlot2, tabPlot3, tabPlot4);
New Window("Results", tabbedResults);
non funzionerà.
Domanda: come costruire una finestra a schede con tutti i tuoi risultati e avere un GraphBuilder live o qualsiasi altra piattaforma con tutte le loro funzionalità interattive, non una versione di report statica e "morta"?
Aggiungerò - ...aggiungi fare cose diverse ed è dal vivo. In precedenza o era live e non potevo aggiungerlo, oppure era "riportato", potevo aggiungerlo, ma non era live.
Sembra che la chiave fosse usare questo:
GrBld = dt1 << Graph Builder(nada-nada-nada);
che produrrebbe un diverso tipo di oggetto (espositore?). Almeno le parole di "Graph Builder" hanno cambiato colore e ora posso aggiungere GrBld a cose diverse.
Non vuoi usare Report() in questo caso. Trovo utile Report quando hai bisogno di un riferimento all'output di una piattaforma per poter estrarre i risultati visualizzati (tramite lo scripting di displaybox). Questo è rapidamente visto nell'esempio qui sotto.
Si noti che sia biv che bivRpt producono entrambi output ma sono tipi di oggetto differenti. biv è "Bivariate[]" e bivRpt è "DisplayBox"
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );<BR />
biv = Bivariate( Y( :weight ), X( :height ), Fit Line );<BR />
<BR />biv << LocalDataFilter(<BR /><BR /> Add Filter(<BR /><BR /> columns( :age, :sex ),<BR /><BR /> Where( :age == {13, 14, 15, 16} ),<BR /><BR /> Where( :sex == "M" ),<BR /><BR /> Display( :age, Size( 160, 90 ), List Display )<BR /><BR /> )<BR /><BR />);<BR /><BR /><BR /><BR />
bivRpt = Report(
Bivariate( Y( :weight ), X( :height ), Fit Line )
);<BR /><BR /><BR /><BR /><BR />bivRpt << showTreeStructure;<BR /><BR /><BR />NewWindow("Biv's Report", bivRpt);<BR />
Per quello che vuoi fare, ovvero la disposizione personalizzata di grafici e analisi in tempo reale, farei quanto segue:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Profit by Product.jmp" );
gb1 = Expr(
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Quarter ),
Y( :Revenue ),
Y( :Product Cost, Position( 1 ) ),
Y( :Profit, Position( 1 ) ),
Wrap( :Product Line )
),
Elements( BoxPlot( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 6 ) ) )
)
);
gb2 = Expr(
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Quarter ),
Y( :Revenue ),
Y( :Product Cost, Position( 1 ) ),
Y( :Customer Service Cost, Position( 1 ) )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 6 ) ),
Points( X, Y( 1 ), Y( 2 ), Y( 3 ), Legend( 6 ) )
)
)
);
New Window( "", <BR /><BR />Tab Box( Tab Page Box( "Graph1", gb1 ),<BR /><BR />Tab Page Box( "Graph2", gb2 )<BR /><BR /> ) );