如何获取Scatterplot 3D的容器嗨,
当我在Scatterplot 3D中表示数据时,我会经常重复某些操作。例如,我更改颜色主题(颜色条),点的大小等。表是不同的但是操作是相同的,并且它们没有引用特定的列,所以我认为操作可以自动化。
我想知道如何为已经打开的图表编写脚本。对于2d grahps,我可以使用,例如,此命令来引用容器:
Window( Window name )[framebox( 1 )] << set background color( "gray" );
但我无法在Scatterplot 3D中使用它。
谢谢,
大卫
Re:我如何获得Scatterplot 3D的容器你好 @珍珠 ,
Scatterplot 3D使用Display3DBox,因此这应该用于引用该对象,以及您将用于大多数消息(设置墙壁颜色,标记,旋转,旋转等):
Window( Window name )[Display3DBox(1)]
如果你需要设置背景颜色,你实际上想要引用SceneBox:
Window( Window name )[SceneBox(1)]<<BACKGROUND color=""></BACKGROUND>
这是一个完整的例子,我将墙壁和背景设置为蓝色:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Frame3D( Set Grab Handles( 0 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)])
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)])
Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
我希望这有帮助!
@julian
Re:我如何获得Scatterplot 3D的容器如果以交互方式更改颜色并保存脚本,Scatterplot 3D将直接将颜色记录为脚本的一部分:
Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D(
<STRONG>Set Wall Color( -16750758 ),</STRONG>
Set Grab Handles( 0 ),
Set Rotation( -52.9429431878029, -1.24217455677765, 22.838483399832 ),
<STRONG>Background Color( 144, 191, 4 )</STRONG>
)
);
如果您在启动平台时知道所需的颜色,这可能是最简单的解决方案。
Re:我如何获得Scatterplot 3D的容器你好 @julian ,
非常感谢您的回答。Display3DBox对于更改许多属性非常有用。
但是,我仍然无法改变情节的传说。如果我保存脚本,这就是代码,它出现在SendToReport(Dispatch(...))下。
obj = Scatterplot 3D(
Y( :x, :y, :z ),
Coloring( :T composed 2 ),
Legend( 84 ),
Frame3D( Legend( 1 ), Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) ),
SendToReport(
Dispatch(
{},
"100",
ScaleBox,
{Legend Model( 3, Properties( 0, {gradient( {Color Theme( "Spectral" )} )} ) )}
)
);
);你知道一种方法来访问这些类似的属性窗口 ( 窗口名称 ) [ Display3DBox ( 1 ) ] ?
Re:我如何获得Scatterplot 3D的容器谢谢 @danschikore ,正如您所说,最简单的解决方案是更改“首选项”中的默认设置。但是,在将来更改脚本中的属性可能对我有用。Re:我如何获得Scatterplot 3D的容器你好 @珍珠 ,
要告诉平台调度选项,您需要一个可编写脚本的对象(散点图3d平台本身)而不是报表窗口的句柄。我们可以使用<< Get Scriptable Object来帮助我们。获得该句柄后,您可以发送保存脚本时找到的确切分派消息。这是一个完整的例子,包括我展示的以前的自定义:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Coloring( :sex ), Legend( 17 ), Frame3D( Legend( 1 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)]);
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)]);
//set colors, contolled in the report layer<BR />Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
//find the scriptable object so that options can be dispatched
s3dFound = Window( "Big Class - Scatterplot 3D" )[Outline Box( 1 )] << Get Scriptable Object;
//Dispatch options by sending messages to that scriptable object
s3dFound << Dispatch(
{},
"100",
ScaleBox,
{Legend Model(
17,
Properties( 0, {Line Color( 73 ), Marker Size( 10 )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 45 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
)}
);
@julian
Re:我如何获得Scatterplot 3D的容器我应该补充一点,如果您首先使用脚本生成输出,那么您已经拥有了平台的句柄(假设您在启动平台时已经这样做了)。在我的例子中,那是s3d。但是,如果您有一个不是由脚本生成的窗口,则使用<< Get Scriptable Object可以建立该平台的句柄。Re:我如何获得Scatterplot 3D的容器谢谢 @julian ,这很有意思。