Tous,
J'ai un problème qui provient probablement d'un manque de compréhension du fonctionnement de JSL.
Alors, voilà :
J'ai une application qui trace des graphiques via Graph Builder et les place dans une nouvelle fenêtre comportant plusieurs onglets.
Non, je dois faire ceci :
- Générateur de graphiques de tracé :
GrBld = Graph Builder(
blah-blah-blah
);
- Ensuite, je dois obtenir une référence de rapport :
reportGrBld = GrBld<<Report();
- Alors seulement je peux commencer à assembler ma fenêtre à onglets :
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);
Tout fonctionne bien, à une exception près - les tracés deviennent statiques. Donc, je ne peux pas utiliser tous les avantages de GraphBuilder ou de toute autre plate-forme graphique - c'est-à-dire que si je clique sur un élément dans Legend, il ne mettra pas en surbrillance ces points sur le tracé. Si ce rapport est tabulé - le tableau sera statique, tous les filtres que j'ai scriptés ne s'afficheront pas, etc.
Je peux cliquer sur le triangle rouge et sélectionner "réexécuter le script" et tout cela apparaît, mais pas dans la fenêtre à onglets assemblée.
Maintenant, si je dis juste :
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);
ça ne marchera pas.
Question - comment construire une fenêtre à onglets avec tous vos résultats et avoir un GraphBuilder en direct ou toute autre plate-forme avec toutes leurs fonctionnalités interactives, pas une version de rapport statique et "morte" de celui-ci ?
J'ajouterai - ... ajouter faire des choses différentes et c'est en direct. Auparavant, c'était soit en direct et je ne pouvais pas l'ajouter, soit c'était "signalé", je pouvais l'ajouter, mais ce n'était pas en direct.
On dirait que la clé était d'utiliser ceci:
GrBld = dt1 << Graph Builder(nada-nada-nada);
qui produirait un autre type d'objet (boîte de présentation ?). Au moins les mots "Graph Builder" ont changé de couleur et je peux maintenant ajouter GrBld à différentes choses.
Vous ne voulez pas utiliser Report() dans ce cas. Je trouve Report utile lorsque vous avez besoin d'une référence à la sortie d'une plate-forme pour pouvoir extraire les résultats affichés (via le script displaybox). Cela se voit rapidement dans l'exemple ci-dessous.
Notez que biv et bivRpt produisent tous deux une sortie mais sont des types d'objets différents. biv est "Bivarié[]" et bivRpt est "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 />
Pour ce que vous voulez faire, qui est l'arrangement personnalisé des graphiques et des analyses en direct, je ferais ce qui suit :
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 /> ) );