X軸とY軸の自動スケーリングのマッチング解決済み: Re: 関連列を自動的にプロットする - JMP ユーザー コミュニティ
上記の議論に続いて、X 軸と Y 軸の両方でゼロ値を中心に対称になるように、いくつかのプロットのスケーリングを自動化したいと思います。
これが欲しい

自動的にこのように出力されます。

ここへたどり着いたコードは上のリンクに含まれています
さよなら
スパナヘッド
自動化とスクリプトRe: X 軸と Y 軸の自動スケーリングの一致1 つのオプションは、いくつかの行列を使用して「有効な」行をチェックし、それらの行からのみ値を取得して、以前と同じように最大値を計算することです。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "height") << Set Property("Missing Value Codes", {70, 69, 68});
Column(dt, "weight") << Set Property("Missing Value Codes", {172});
m1 = Column(dt, "height") << get values;
m2 = Column(dt, "weight") << get values;
valid_rows = Loc(V Sum(Is Missing(m1 || m2)`), 0);
val = Max(Abs(dt[valid_rows, "weight"] |/ dt[valid_rows, "height"]));Re: X 軸と Y 軸の自動スケーリングの一致ありがとうございます。おっしゃる通りです。質問の表現が適切でないと思います。X の最大値を計算する際、X の欠損値は無視されます。同じ行のパートナー Y 値は欠損していないため、無視されません。データ テーブル内の列を反復処理し、接続されたメトリックを自動的にプロットしていることを明確にする必要があります。
このスクリプトは、電圧しきい値を選択し、選択された場合はそれぞれの電流値に対してそれをプロットします。これが最後に再スケールされると、たとえば X の値が欠落しているためにグラフ上にデータ ポイントが表示されなくなりますが、パートナーの Y 値によってグラフのスケールを設定できます。
To ensure the plot contains the 100 value on both axed, I did modify the matrix to include 110 with |/110;
さよなら
スパナーヘッド
dt = Current Data Table();
dt << Clear Column Selection();
colList = dt << get column names( string );
check_list = {"VTX", "VTN", "VTP", "VTF", "IDS", "IBB", "ILK", "CMI"};
New Window( "Select Variables",
<<TYPE></TYPE>Re: X 軸と Y 軸の自動スケーリングの一致使用している列がわかっているので、Col Min + Col Max を使用して最小値と最大値を取得できます (欠損値コードを尊重する必要があります)。次に、値、Abs() 関数、Max() 関数の組み合わせを使用して、x 軸と y 軸に使用する値を取得します。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
show(Col Max(Column(dt, "height")));
Column(dt, "height") << Set Property("Missing Value Codes", {70, 69, 68});
show(Col Max(Column(dt, "height")));
しかし、欠損値コードによって無視されたポイントは、Bivariateではまったくプロットすべきではないと思います。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(Y(:height), X(:weight));
ms = Report(biv)[FrameBox(1)] << Find Seg(Marker Seg(1));
xs = ms << Get X Values;
ys = ms << Get Y Values;
val1 = Max(Max(Abs(xs)), Max(Abs(ys)));
biv << close window;
Column(dt, "weight") << Set Property("Missing Value Codes", {172});
biv = dt << Bivariate(Y(:height), X(:weight));
ms = Report(biv)[FrameBox(1)] << Find Seg(Marker Seg(1));
xs = ms << Get X Values;
ys = ms << Get Y Values;
val2 = Max(Max(Abs(xs)), Max(Abs(ys)));
show(val1, val2);Re: X 軸と Y 軸の自動スケーリングの一致列のデータ型を保持するために、数値のエラー コードが多数あります。分析では、それらに目をつぶる必要があります。ただし、X または Y のいずれかに欠損値コードがマークされていて、もう 1 つがマークされていない場合は、グラフに実際にプロットされていないデータによってスケールを設定できます。

大変助かりました。
さよなら
スパナヘッド
Re: X 軸と Y 軸の自動スケーリングの一致この場合、「行方不明としてマーク」とはどういう意味ですか?
他の値を保持したい場合は、行列に欠損値があっても機能するはずです。

Re: X 軸と Y 軸の自動スケーリングの一致気付いた小さなことが 1 つあります。場合によっては、ys または xs マトリックスの 1 つに欠損値コードが与えられているために欠損値があります。パートナー マトリックスの値は欠損していない可能性があり、スケールを設定するために含めることができます。行が xs に対して欠損としてマークされている場合、ys が欠損値であるときに xs が同様に除去されるのと同様に、ys から値を除去する方法はありますか。
さよなら
スパナヘッド
Re: X 軸と Y 軸の自動スケーリングの一致すごい! 素晴らしい働きをします。
Re: X 軸と Y 軸の自動スケーリングの一致最大値(絶対値)を計算し、その負の値を取って値を設定するのが1つの選択肢です。Col Max() / Col Min() または Summarize を使用してデータテーブルから値を計算することもできます。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(Y(:height), X(:weight));
ms = Report(biv)[FrameBox(1)] << Find Seg(Marker Seg(1));
xs = ms << Get X Values;
ys = ms << Get Y Values;
val = Max(Max(Abs(xs)), Max(Abs(ys)));
xaxis = Report(biv)[AxisBox(1)];
yaxis = Report(biv)[AxisBox(2)];
xaxis << Min(-1*val) << Max(val);
yaxis << Min(-1*val) << Max(val);