皆さんこんにちは、
経験の浅いJSLスクリプターはこちら。 これが些細な質問である場合はお詫びしますが、特定の回転角度(散布図3Dを手動で実行して生成された3Dグラフのユーザーの回転によって決定される)の散布図3Dコマンドを変数に挿入する方法があるかどうか疑問に思いましたJSLスクリプト。 例えば、
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
、しかし、すでに生成された散布図からの回転値を入力として必要とするプロセスを自動化しようとしているので、回転値をコードに手動でコピーして貼り付けることなくこれを実行できるようにするという考えです。 最終的な目標は、事前に定義された回転値を入力として受け取り、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」には散布図は含まれていませんが、散布図と出力表示に関連付けられているさまざまなオブジェクトを含む出力表示ツリー内の最上位オブジェクトへのポインタです。
以下は、上記のディスカッションの質問のために私が書いたスクリプトです。その中で、ユーザーは散布図3Dを実行でき、散布図を閉じると、表示ツリーに入り、実行すると散布図3Dを再生成するJMPスクリプトが抽出されます。閉鎖されました。次に、スクリプトは続行し、3つの軸と回転値の列を、それぞれvarsListとrotationListと呼ばれる2つのJMPリストに抽出します。そこから、それらの値を新しい列として元の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ドキュメントライブラリの[ヘルプ]プルダウンメニューにあるJMP / JSLのスクリプトガイドをお読みになることを強くお勧めします。