列スイッチャー チャートをリセットし、スクリプト オブジェクトを削除するこんにちは。最近 (JMP17 に移行した後)、列スイッチを使用するたびにチャートがリセットされます。凡例が削除され、グラフのサイズが元に戻り、グラフに配置したスクリプト オブジェクトが削除されます。これは変動チャートで発生しましたが、列スイッチャーによってスクリプト オブジェクトが実際に複製され、凡例が削除される等高線図でも同様の問題が発生しました。これを防ぐ唯一の方法は、自動再計算を削除することでしたが、これは等高線図では機能しましたが、他のチャート分析では機能しませんでした。
これを防ぎ、列スイッチャーをスクロールしながらすべてのチャート設定とスクリプト オブジェクトをそのまま維持するにはどうすればよいでしょうか?
基本的なデータ分析とモデリングRe: 列スイッチャー チャートをリセットし、スクリプト オブジェクトを削除するJMP 18 以降では、列スイッチャー (およびその他の機能) を使用したカスタマイズされたレポートが多くの場合改善されています。以前のバージョンでは、変更される列名がカスタマイズされた表示項目のタイトルまたはテキストに表示される場合に問題が発生する傾向がありました。次のスクリプトは JMP 17 では機能しませんが、JMP 18 では機能します。
dt = Open( "$SAMPLE_DATA/Variability Data/2 Factors Crossed.jmp" );
vc = dt << Variability Chart(
Y( :Measurement ),
X( :Operator, :part# ),
Always use column properties( 1 ),
);
cs = vc << Column Switcher( :Measurement, {:Measurement, :Standard} );
Wait(1);
Report(vc)[FrameBox(1)] << Frame Size(400,200);
Report(vc)[FrameBox(2)] << Frame Size(400,200);
Wait(1);
cs << Set Current("Standard");
変動レポートでは、列名がタイトルやラベルに使用されているケースが多数あります。名前が単独で使用されている場合、カスタマイズは正常に機能している可能性があります。より一般的な問題が発生するケースは、次のアウトライン タイトルのように、名前が別の文字列に埋め込まれている場合です。

残念ながら、JMP 17 以前では、JSL スイッチャー コールバック スクリプトを使用してカスタマイズを再適用するしか解決策はありません。
Re: 列スイッチャー チャートをリセットし、スクリプト オブジェクトを削除するカスタマイズを再適用するために使用される JSL スイッチャー コールバック スクリプトの例を共有していただけますか? 私はその経験がなく、このソリューションに精通していません。説明していただきありがとうございます。
Re: 列スイッチャー チャートをリセットし、スクリプト オブジェクトを削除するこんにちは@ChiSquareShark9 - 以下は、列スイッチャーが呼び出されるたびにフレーム サイズをリセットする上記のスクリプトの拡張バージョンです。JMP 17 では、フレームがデフォルト サイズに戻り、その後目的のサイズに変更されるときに、短いちらつきが発生します。JMP 18 では、ちらつきは発生せず、コールバック ハンドラーは必要ありません。その場合、新しいプラットフォームの起動時にフレーム サイズは保持されます。
NamesDefaultToHere(1);
dt = Open( "$SAMPLE_DATA/Variability Data/2 Factors Crossed.jmp" );
vc = dt << Variability Chart(
Y( :Measurement ),
X( :Operator, :part# ),
Always use column properties( 1 ),
);
cs = vc << Column Switcher( :Measurement, {:Measurement, :Standard} );
Wait(1);
Report(vc)[FrameBox(1)] << Frame Size(400,200);
Report(vc)[FrameBox(2)] << Frame Size(400,200);
Wait(1);
pre = Function( {currentColumn, nextColumn, switcher},
size1 = Report(vc)[FrameBox(1)] << Get Size;
size2 = Report(vc)[FrameBox(2)] << Get Size;
);
post = Function( {previousColumn, currentColumn, switcher},
Report(vc)[FrameBox(1)] << Frame Size(size1[1], size1[2]);
Report(vc)[FrameBox(2)] << Frame Size(size2[1], size2[2]);
);
handler = cs << Make Column Switch Handler( pre, post );
Re: 列スイッチャー チャートをリセットし、スクリプト オブジェクトを削除するありがとう!