嗨,大家好,
這裡沒有經驗的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文檔庫”中找到。