全部,
我有一个问题可能源于对 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 中的一个项目,它不会突出显示绘图上的这些点。 如果此报告是制表 - 表格将是静态的,我编写的所有过滤器都不会显示,等等。
我可以单击红色三角形并选择“重新运行脚本”,所有这些东西都会出现,但不会出现在组装的选项卡式窗口中。
现在,如果我说:
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()。 当您需要对平台输出的引用以便能够挖掘显示的结果(通过 displaybox 脚本)时,我发现 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 /> ) );