全部,
我有一個問題,可能是由於不了解 JSL 中的工作原理。
所以,這裡是:
我有一個應用程序,它通過 Graph Builder 繪製一些圖表,並將它們放在上面有多個選項卡的新窗口中。
不,我必須執行以下操作:
- 繪圖圖形生成器:
GrBld = Graph Builder(
blah-blah-blah
);
- 然後我必須得到一個報告參考:
reportGrBld = GrBld<<Report();
- 然後只有我可以開始組裝我的選項卡式窗口:
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);
一切正常,但有一個例外 - 繪圖變為靜態。 因此,我無法使用 GraphBuilder 或任何其他繪圖平台的所有功能 - 即,如果我單擊 Legend 中的某個項目,它不會在繪圖上突出顯示這些點。 如果此報告是 Tabulate - 表格將是靜態的,我編寫的所有過濾器都不會顯示,等等。
我可以單擊紅色三角形並選擇“重新運行腳本”,所有這些東西都會出現,但不會出現在組裝的選項卡式窗口中。
現在,如果我只是說:
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);
它不會工作。
問題 - 如何構建包含所有結果的選項卡式窗口,並擁有實時 GraphBuilder 或任何其他具有所有交互功能的平台,而不是靜態的“死”報告版本?
我將添加 - ...追加做不同的事情並且它是實時的。 以前它要么是實時的但我無法附加它,要么它是“報告的”,我可以附加它,但它不是實時的。
看起來關鍵是使用這個:
GrBld = dt1 << Graph Builder(nada-nada-nada);
這會產生不同類型的對象(顯示框?)。 至少“Graph Builder”字樣改變了顏色,我現在可以將 GrBld 附加到不同的東西。
在這種情況下,您不想使用 Report()。 當您需要對平台輸出的引用以便能夠挖掘顯示的結果(通過顯示框腳本)時,我發現 Report 很有用。 這在下面的示例中很快就會看到。
請注意,biv 和 bivRpt 都產生輸出,但對像類型不同。 biv 是“Bivariate[]”,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 />
對於您想要做的,即實時圖表和分析的自定義排列,我會執行以下操作:
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 /> ) );