JSLは曲線の値を復元できますか?既に特定の曲線がある場合、どのようにコードを使用してデータの近くに復元できますか。
既知データ数、データの最大値、最小値を設定
何らかの人工知能機能を持っているようです。
ありがとう専門家!

スクリプティングRe: JSL は曲線の値を復元できますか?そして最も重要なことは、この曲線が他の曲線とどれだけ似ているかを知りたいということです。
原則として、2 つのデータセットを比較する必要があります。
JMPはこれをうまく達成できますか?
たとえば、以下のJSLでグラフを作成し、上のグラフと比較してください。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Sort( By( 1 ), Order( Ascending ), replacetable( 1 ) );
New Column( "A" );
Column( "A" ) << Formula( Row() );
dt << run formulas;
Column( "A" ) << deleteFormula;
p1 = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :A ) ),
Elements( Line( X, Y, Legend( 4 ) ) )
);

ありがとう専門家!
Re: JSL は曲線の値を復元できますか?このスクリプトの力について、Brady に改めて感謝します。
このスクリプトをさらに一歩進めたい
ただし、スクリプトはデータとして識別するためにわずかに変更されています。
対応する Y 値を特定する限り、1 つのピクセル (X 軸位置) のみで曲線を特定します。

Re: JSL は曲線の値を復元できますか?ところで、ピクセルの平均化を気にせず (ここのグラフの線は、各列で数ピクセルの太さです)、近似値を探しているだけの場合は、(この特定の例では) 処理を行うことができます。はるかに高速になり、データ テーブルが乱雑になりません。 ご覧のとおり、得られるグラフは基本的に同じです。
</CODE></P>
<PRE><CODE class=" language-jsl">names default to here(1);
New Window( "Example",
pb = Picture Box( Open( "/Users/homer.simpson@jmp.com/Downloads/graphPic.png", png ) )
);
pixMat = (pb << get image) << get pixels;
pixMat = pixMat[20 :: 265, 15 :: N Col( pixMat )];
nc = N Col( pixMat );
x = (1 :: nc)`;
y = J( nc, 1, . );
For( i = 1, i <= nc, i++,
y[i] = Loc Min( pixMat[0, i] )
);
y = nrow( pixMat ) - y; //"flip" y-vals to account for screen coordinate convention.
dt = As Table( x || y, <<COLUMN names=""></COLUMN>
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-382962" slang="en-US" mode="NONE">Re: JSL は曲線の値を復元できますか?</LINGO-SUB><LINGO-BODY id="lingo-body-382962" slang="en-US" mode="NONE"><P>これは必ずしも簡単ではありませんが、グラフによっては実行できる可能性があります。 提供したグラフに対してこれを行う1つの方法を次に示します。 私は画像処理のバックグラウンドがないので、もっと効率的な方法があるかもしれません。</P>
<P> </P>
<P>アイデアは、画像のピクセル値を取得し、背景とグラフの違いに注目することです。 この場合、グラフの色はピクセルのどの列でも最小でした。 他の場合では、ある種のバンドパス フィルターなどを導出する必要があるかもしれません。 多色の背景の場合、グラフの色が背景の色の 1 つと同じである場合、この方法でも機能しない可能性があります。 とにかく、これを試してみてください。</P>
<P> </P>
<P>これは大まかなアプローチですが、出発点となるはずです。 データのクリーンアップ/スムージングは、事後に行うのはそれほど難しくありません。 他の人も、アプローチとパフォーマンスを改善するための多くの方法を見つけると確信しています。</P>
<P> </P>
<P>注: x と y を再スケーリングしませんでした。 繰り返しますが、マトリックスをグラフのデータに落とし込めば、それを行うのは難しくありません。</P>
<P> </P>
<P>使用した .png を添付したので、同じファイルを使用できます。</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32659i25847C5EFC991944/brady_brady_0-1620328935156.png" role="button" title="brady_brady_0-1620328935156.png" alt="brady_brady_0-1620328935156.png" /></span></SPAN></SPAN></P>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
<P>乾杯、</P>
<P>ブレイディ</P>
<PRE><CODE class=" language-jsl">
Names Default To Here( 1 );
//need to save image and put the file path in the open() function.
New Window( "Example", pb = Picture Box( Open( "/Users/brady.brady@jmp.com/Downloads/graphPic.png", png ) ) );
img = pb << get image;
pixMat = img << get pixels;
pixMat = 1000*(floor(pixMat/1000)); //smooths values; use whatever factor you like
dt = astable(pixmat);
eval(substitute (
expr(dt << new column("Row", formula( _ROW_ - :row()))), //low rows for pixels are high. This is a fix for that.
expr(_ROW_),
nrow(dt)
));
dt:row << Delete Formula;
dt << move selected columns({"Row"}, to first);
dt << select where (:row() <= 20 | :row() >= 265) << Delete Rows; // top and bottom few rows of this table are not useful
stackCols = (dt << get column names)[14::ncol(dt)];
dtStack = dt << Stack(
columns( stackCols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :Row ) )
);
dtStack << select where (:data == col minimum(:data, :label)); //in this case, minimum color is the graph.
dtSub = dtStack << subset(selected rows(1), selected columns (0));
dtSub << new column("x", formula(num(substitute(:label, "Col", ""))));
summarize(dtSub, b = by(:label), yVals = mean(:Row), xVals = mean(:x));
astable(xvals || yvals, <<COLUMN names=""></COLUMN>
Re: JSL は曲線の値を復元できますか?答えを提案するには、質問について十分に理解していないことを認めなければなりません。 曲線がビット マップ ペインティング (.png ファイル) である場合、それを読み取ろうとするのが JMP であるとは思えません。 ある種の光学スキャンおよび認識ソフトウェアをお探しですか?
曲線はどのような形式ですか? 赤い曲線を読み取ろうとしているのですか、それとも画像の下にある数値テキストを読み取ろうとしていますか?
おそらく、JMP ではできないと断言することで、私が気付いていない JMP の機能を学ぼうとしているのかもしれません。