私はいくつかのカスタムグラフ用のツールを構築しています。 共有しているユーザーがツールを簡単に変更できるようにしたいと思います。 参入障壁を減らすために、マスター関数内で呼び出すサブ関数を使用したいと思います。 各サブ関数は、メイン関数全体のごく一部を表します。
私の質問:グラフビルダー内の「ディスパッチ」の引数を関数として置き換えることは可能ですか? または、私が気付いていない小さなサブ関数を作成するための別の標準的なアプローチはありますか。
徹底的な対応をしてくれたジムに感謝します。 テキストとして渡して、なんとかして解析する必要があると思いましたが、これほど醜いとは思っていませんでした。 まあ、これは私がそのようなニッチな要件を持つために支払う価格だと思います。 これは私にとっては完璧です。 マスター関数で醜いコードのほとんどを隠すことができる限り、エンドユーザーがそれをそのままにしておくことが私の目標であるため、私は幸せです。 私は現在、コミュニティに深く関わっていますが、JMPでのスクリプティングの経験が増えたので、貢献することで助けを返済できることを願っています。
これがあなたが望むことを達成するいくつかのコードですが、それはあまりきれいではありません。必要なのは、置換を使用してコード生成を実行できるようにすることですが、これはJMPではうまく処理されません。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
myfunc = Function( {},
return =
"\[Dispatch(
{},
"2",
ScaleBox,
{Min( 92.9916666666667 ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)]\"
);
Eval(
Substitute(
Expr(
Bivariate( Y( :NPN1 ), X( :PNP1 ), SendToReport( __dispatch__ ) )
),
Expr( __dispatch__ ), Parse( myfunc )
)
);
JMPは、最小値の受け渡しなど、プラットフォーム構造内のコンポーネントの交換を処理できます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
mymin = 80;
Bivariate(
Y( :NPN1 ),
X( :PNP1 ),
SendToReport(
Dispatch(
{},
"2",
ScaleBox,
{Min( Eval( mymin ) ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)
)
);
または、デフォルトのグラフを生成し、生成後にパラメーターを設定するという、推奨される方法です。関数の呼び出しを使用して、必要な項目を条件付きで設定できます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
myfunc = function({},
Report( biv )[Axis Box( 1 )] << Min( 80 );
);
biv = Bivariate(
Y( :NPN1 ),
X( :PNP1 ),
SendToReport(
Dispatch(
{},
"2",
ScaleBox,
{Min( 92.9916666666667 ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)
)
);
myfunc;こんにちはジム、
返信いただきありがとうございます。 ただし、問題をもう少し明確にしてみます。
JSLスクリプトのGraphBuilder内に、次のようなコードブロックがあるとします。
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(... etcたとえば、これでは線の色をカスタマイズしています。
次のような別のJSLスクリプトで関数を作成することはできますか?
myDispatch=Function(
{},
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(.... etc次に、JSLスクリプト内で、ディスパッチ関数の代わりにmyDispatch()を使用します。
私はこれを試しましたが、エラーはログに記録されませんが、関数は適用されません(つまり、グラフはデフォルトの線の色などを使用し、関数を無視します)。 グラフビルダー自体に引数を明示的に入力しないと、動作させることができません。
どうもありがとう
あなたが見れば:
ヘルプ==>スクリプトインデックス==>グラフビルダー
プラットフォームにリクエストを渡すことで、GraphBuilderで操作できるさまざまなコンポーネントがすべて表示されます。これらはすべて、ユーザービルド関数に組み込むことができます。
