JSL を使用して既存の DisplayBox を変更する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />[Fit Model()] ダイアログの出力を変更して、[適合の概要] テーブルに予測 R2 を含めるボタンを作成しようとしています。現在のウィンドウを取得してから、PRESS 統計をアクティブにする必要があります。この後は非常に簡単で、コンテスト メニューから PRESS 統計をすでに有効にしていれば、ほとんどの場合機能します。また、モデルの適合ダイアログを自分でコーディングし、2 行目を使用して PRESS 統計をアクティブにしてレポートに送信する場合にも機能します。私が遭遇している問題は、Current Window() を取得すると、プラットフォームに動作を指示する方法がないのに DisplayBox を取得することです。スクリプトを取得してウィンドウを作成し、元のスクリプトを閉じて新しいスクリプトを実行することも考えましたが(画面のちらつきが 1 回あるだけでそれほど問題はありません)、<< Get Script は Fit Model() スクリプトではなくツリー構造を返します。何か簡単に欠けているものはありますか?これは JMP 9 で書いていますので、お役に立てれば幸いです。JMP 8 と互換性があることを願っていますが、それは重要ではありません。ありがとう!
dg = Current Window();dg << PRESS; /###/press = dg[NumberColBox("Press RMSE")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];predR = 1-press/sst;values = dg[NumberColBox(1)] << Get as Matrix;newvalues = J(1,6);newvalues[1::2] = values[1::2];newvalues[3] = predR;newvalues[4::6] = values[3::5];dg[StringColBox(1)] << Set Values({"RSquare","RSquare Adj","RSquare Pred","Root Mean Square Error","Mean of Response","Observations (or Sum Wgts)"});dg[NumberColBox(1)] << Set Values(newvalues);Re: JSL を使用して既存の DisplayBox を変更する方法MS - Get Scriptable Object が問題を完全に解決します。「グループ」を持つことが問題を引き起こす可能性があることはわかりますが、私たちがここで行っている仕事の種類を考えると、それが実際の問題になるとは思いません。解決に導いていただき、本当にありがとうございました!
dg = Current Window();fm = dg[OutlineBox(1)] << Get Scriptable Object;fm << PRESS(1);press = dg[NumberColBox("Press")] << Get as Matrix;press = press[1];ss = dg[NumberColBox("Sum of Squares")] << Get as Matrix;lastrow = Nrow(ss);sst = ss[lastrow];Re: JSL を使用して既存の DisplayBox を変更する方法なるほど、分かりました。 <
理解するのに時間がかかりましたが、<
dt =開ける( "$ENGLISH_SAMPLE_DATA/Big Class.jmp" ) ;
フィットモデル(
Y ( :重さ) 、
効果( :身長) 、
人格(標準最小二乗法) 、
強調(最小限のレポート) 、走る
) ;
フィット=窓( 「大きなクラス: 最小二乗法を当てはめる」 )[アウトラインボックス( 1 )] <<スクリプト可能なオブジェクトを取得する;
フィット<<プレス( 1 ) ;
印刷する(フィット<<スクリプトを取得) //Get Script は期待どおりに機能します。
JSL を使用して既存の DisplayBox を変更する方法MS - 素早い返信ありがとうございます。問題は、これを希望どおりに展開するには、以下の部分を含めることができないことです。
fit = Fit Model( Y( :ABRASION ), Effects( :SILICA, :SILANE ), Personality( Standard Least Squares ), Emphasis( Minimal Report ), Run( :ABRASION << {Plot Actual by Predicted( 0 ), Plot Regression( 0 ), Plot Residual by Predicted( 0 ), Plot Effect Leverage( 0 )} ));dg = Report( fit );
これをアドインとしてエンドユーザーがデプロイして、一般的な JMP インターフェイスを使用してモデルを適合させた後、ツールバーから簡単に押して重要な情報を追加できるようにしたいと考えています。
私を混乱させるのは、JSL ではなく JMP がウィンドウを作成した場合、JSL 経由でウィンドウのコンテキスト メニューにアクセスできないことです。JSL 経由でトップレベルのメニューには簡単にアクセスできますが、コンテキスト メニューにはアクセスできません。また、<< Get Script メッセージが、コンテキスト メニューが提供するものと同様にウィンドウを作成するための JSL スクリプトではなく、ウィンドウのツリー構造を返す理由がわかりません。JMP で私が望むことができることはわかっていますが、JSL からはロックされているようです。
JSL を使用して既存の DisplayBox を変更する方法あなたが何をしようとしているのか正確にはわかりませんが、Press(1) メッセージを Window オブジェクトではなく Fit Model オブジェクトに送信する必要があると思います。 以下の例のように(実行して「PRESS」をクリックします)。 JMP9 (Mac) で動作します。
dt =開ける( "$English_Sample_Data/タイヤトレッド.jmp" ) ;
フィット=フィットモデル(
Y ( :摩耗) 、
効果( :シリカ、 :シラン) 、
人格(標準最小二乗法) 、
強調(最小限のレポート) 、
走る(
:摩耗<< {実際の値と予測値をプロットする( 0 ) 、回帰プロット( 0 ) 、予測による残差のプロット( 0 ) 、
プロット効果の活用( 0 )}
)
) ;
ディグ=報告(フィット) ;
ディグ<<先頭に追加する(
ボタンボックス( "プレス" 、
フィット<<プレス( 1 ) ;
プレス=ディグ[番号欄ボックス( 「RMSEを押してください」 )] <<行列として取得;
プレス=プレス[ 1 】 ;
ss =ディグ[番号欄ボックス( "平方和" )] <<行列として取得;
最後の行= N列( ss ) ;
sst = ss [最後の行】 ;
プレドR = 1 -プレス/ sst ;
価値観=ディグ[番号欄ボックス( 1 )] <<行列として取得;
新しい価値観= J ( 1 、 6 ) ;
新しい価値観[ 1 :: 2 】 =価値観[ 1 :: 2 】 ;
新しい価値観[ 6 】 =プレドR ;
新しい価値観[ 3 :: 5 】 =価値観[ 3 :: 5 】 ;
ディグ[文字列列ボックス( 1 )] <<要素の追加( 「アールスクエア プレド」 ) ; // 値の追加は機能しないため、並べ替えが行われます
ディグ[番号欄ボックス( 1 )] <<設定値(新しい価値観) ;
)
) ;
JSL を使用して既存の DisplayBox を変更する方法念のために言っておきますが、最初の行 dg = Current Window();ログに DisplayBox[] を返します。JSL 経由でウィンドウのコンテキスト メニューにアクセスし、後で取得できるようにツリー構造に項目を追加する方法、具体的には PRESS(1) にフラグを立てる方法を探しています。ありがとう!
Re: JSL を使用して既存の DisplayBox を変更する方法開いているフィットグループウィンドウのスクリプトウィンドウにスクリプトを保存するスクリプトを考案しようとしていました。つまり台本を掴むための台本。これを行うには、フィット グループとオブジェクトを作成し、それにメッセージを送信する必要があります。手動で行うのは簡単ですが、自動化することは可能ですか?