嗨,大家好,
这里没有经验的JSL脚本编写者。 抱歉,这是一个琐碎的问题,但是我想知道是否有一种方法可以从内部将针对特定旋转角度(由用户手动执行散点图3D生成的3D图形的旋转确定)的散点图3D命令插入变量中JSL脚本。 例如,
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
,但是这样做的目的是无需手动将旋转值复制粘贴到代码中,因为我正在尝试自动化一个过程,该过程需要将已经生成的Scatterplot中的旋转值作为输入。 最终目标是创建一个脚本,该脚本以预定的旋转值作为输入,并与R脚本(已编写)交互以从3D散点图生成2D图,这可以避免使用Mac剪贴板带来的不便。
任何帮助表示赞赏,谢谢。
作为对此的后续措施,是否可以将当前打开的散点图插入变量中?
该讨论问题似乎与先前的讨论有关,或与先前的讨论相同从3D散点图脚本中选择旋转和数据列
要回答本文中的特定问题,您的脚本
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
运行时,生成一个输出显示对象,可通过创建指向该对象的变量在JSL中对其进行访问
spr = report( sp );
//or
spr = sp << report;
“ spr”不包含散点图,而是指向输出显示树中顶部对象的指针,该树包含散点图和与输出显示关联的各种对象。
以下是我为上述参考讨论问题编写的脚本。在其中,它允许用户运行Scatter Plot 3D,并且当散点图关闭时,它进入显示树并提取JMP脚本,如果运行该脚本,将重新生成Scatter Plot 3D,就像它当时一样。关门了。然后,脚本继续运行,并将3个轴和旋转值的列分别提取到2个JMP列表中,分别称为varsList和rotationList。从那里,它将这些值作为新列添加回原始JMP数据表,然后将数据表另存为csv文件。
不知道要传递给R的csv文件中所需的格式,这只是对所需内容的猜测。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
sp << on close(
theScript = Char( (Report( sp ) << get scriptable object) << get script );
varsList = {};
Insert Into( varsList, Word( 2, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 4, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 6, Substr( theScript, Contains( theScript, "Y(" ) ), ":,)" ) );
rotationList = {};
Insert Into( rotationList, Word( 2, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 3, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 4, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
dtSub = dt << subset( columns( Eval( varsList ) ), selected rows( 0 ) );
dtSub << New Column( "_Vars_", character, set values( varsList ) );
dtSub << New Column( "_Rotation_", character, set values( rotationList ) );
dtSub << Save( "$TEMP/passvalues.csv" );
close( dtSub, nosave );
);
// This line opens the csv back into JMP
//open("$TEMP/passvalues.csv");
关于JMP的工作原理,不能将散点图放入变量中,然后将其传递给R或将其另存为.csv文件。但是,可以在将散点图的图像保存到图像文件时提取散点图的图像,也可以将其作为斑点传递。我不完全知道你在找什么。您可能需要研究JMP自动化,这将允许您从JMP调用R,并使您直接将所需的信息从JMP传递到R。
请返回社区,详细说明您的确切需求,我们将尽力帮助您解决问题。
最后,我强烈建议您花时间阅读JMP / JSL脚本指南,该指南可在“帮助”下拉菜单下的“ JMP文档库”中找到。