@Craige_Halesと@ミトゥルシャー、
ベジエ曲線に関する私の知識と経験は限られています。 私は製図 (建設と造園) のデザインと衣服のデザインでそれらの有用性を見てきました. もちろん、数学的基盤は常に私にとって興味深いものです。私はインターネットの周りで少しうなずきました、そしてそれを見つけました@ミトゥルシャーの Excel のベジエ スプライン、B スプライン、アルゴリズムの探求は一般的なものです。 1 つのリンクExcel 平滑化アルゴリズムの質問zip ファイルへのリンクが含まれています。 http://xlrotor.com/Smooth_curve_bezier_example_file.zipこの zip には、Excel の滑らかな曲線からピクセルを取得し、曲線上のポイントを補間するためのオートメーション ルーチンが埋め込まれたベジエ曲線の 2002 .xls の例が含まれています。これは「正確」ではなく、曲線から 4 ピクセルを取得する手法を使用しています。 端点は、最初の補間点と最後の補間点で 2 回使用されます。
Craige が GraphBuilder の Line 要素オプションを使用して曲線にするオプションについて投稿した後に私が発見した JMP の 1 つは、このプラットフォームに使用されるスプラインは、エンドポイントの勾配が Excel のものと非常に似ているため、別のアルゴリズムを使用する必要があるということです。 GB プロットのピクセルを抽出して、DSP (デジタル信号処理) を実行するスクリプトを開始しました。 次に、上記の Web リンクを見つけ、Excel スプレッドシートから補間されたポイントを使用して、GB ライン (曲線) でオーバーレイすることにしました。 以下の最初のスクリーンショットは、スピン B ポイントとして JMP テーブルに追加された、ベジェ スプラインと補間ポイントを含む Excel グラフを含む Excel ワークシートを示しています。2 番目の図は、JMP GB ライン (曲線) に Excel の補間点を重ね合わせたものです。
Excel Interpolated Points > Spin B in JMP tableExcel 補間点 > JMP テーブルのスピン B
JMP Line(curve) spline overlaid with Excel interpolationsExcel補間でオーバーレイされたJMP線(曲線)スプライン
補間アルゴリズム、Excel と JMP 曲線の違い、または両方の組み合わせが原因である可能性があります。 これらの同じ 4 つの点は、Excel チャートの曲線よりもわずかに高いことに注意してください。
したがって、私の結論は、JMP GB ライン (曲線) スプラインは Excel のベジエ曲線に非常に似ているということです。私の関心は高くありませんが、もし飽きたら、DSP スクリプトを完成させて、ライン (曲線) ポイントを「取得」するかもしれません。以前のバージョンの JMP では、保存された .jrn ファイルでカーブ ポイントを報告していましたが、現在は隠し関数への参照のみが .jrn ファイルに含まれています。
さて、私がこの問題について相談しているとしたら、最初の一連の質問は次のようになります。
- これらのデータ (4 点) はどこから来て、目的は何ですか?
- スプライン曲線は、直線や多項式と同様に、複雑な関数関係の代わりに検量線 (補間に使用される曲線) を作成するのに役立ちます。 ただし、曲線から補間を計算する場合は、精度を高めるために、定期的なデータ間隔と複製をお勧めします。 X 値の間隔が不規則であるため、X と Y の両方に影響を与える 3 番目 (またはそれ以上) の変数があるのではないかと考えています。 たとえば、どちらも毎日または毎週のテスト読み出しからの読み出しです。
- X と Y の関係を支える基本的な第一原理はありますか。たとえば、次のようなものがあります。細胞増殖;汚染腐食など。
- なんでポイント少ないの? 複製のコストはいくらですか?
基本的な非線形関係が存在する場合、データを取得し、関係を適合させてパラメーター (学習曲線、劣化曲線) などを推定する努力をする価値があることが多いというのが私の経験です。 Craige Hales 氏によると、制御点 (数と位置)、ノット、および終点のわずかな違いによって、特に「x」のギャップが大きい場合に、スプラインの曲率 (曲線上の点) に大きな違いが生じる可能性があります。Excel が曲線スプラインのポイントや式を意図的に公開しなかったため、人々はそれを推定用の近似モデルのように使用しないと思います。X と複製の「近い」値を使用すると、補間のリスクがはるかに少なくなることに注意してください。
スプラインは、JMP と Excel で同じように見えない開始点と終了点の勾配を選択します。 スプラインは、ポイントの各ペア間で異なるキュービックを使用し、多数のポイントをスムーズに結合して、勾配と曲率を一致させることができます。 点が 4 つしかない場合は、立方体を 4 つの点に当てはめ、数式を使用して補間を行うことが理にかなっている場合があります。
統計学者の答えが得られるかもしれません。
Graph Builder can do it. So can Fit Y by X.グラフビルダーはそれを行うことができます。 Y by X に合わせることもできます。
@ミトゥルシャー、
期待する Excel チャートを追加すると役立ちます。
提供されたデータ (シリーズ) を並べ替えずに使用すると、Excel は次の最初のグラフを作成します。 シリーズを Excel で並べ替えると、2 番目のグラフが結果になります。
ご了承ください
- JMP プラットフォームでは、デフォルトで、テーブル内の順序ではなく、値によって曲線をデータに適合させます。
- 以下の 2 番目のプロットのようなプロットが必要であると仮定すると、Y を X でフィット、フレキシブルにフィット、カーネル スムーサー リニア トライキューブをフィットが、スプラインの代わりに使用するオプションになります。
- 曲線がデータの順序を説明する下の最初のグラフのようなプロットを作成するには、次のようにパスのスクリプトを作成する必要があります。 @Craige_Hales前に述べた。
あなたの応答から、あなたが探しているものは私には明確ではありませんでした.

これが私がやろうとしていることです
滑らかな曲線機能を使用して、Excel の散布図を複製します。
柔軟なスパインで JMP fit Y by X を使用すると、Excel が散布図 + 滑らかな線で生成する曲線とは異なる曲線になります。 Excelはベジエ曲線フィットを使用していると思います。
データポイント:
スピン | X |よ
あ | 2.41 | 846.8692
あ | 0.93 | 77.043
あ | 1.37 | 155.2193
あ | 1.96 | 390.4639

柔軟なスプラインを使用してこの線を描画したくはありませんが、強制的にベジェ曲線を描きたいです。 それが理にかなっていることを願っています。
ありがとう
クレイジさん、こんにちは。
path() 関数を理解し、ポイント、コントロール ポイント、ベジェ ポイントを移動しようとしています。
私が持っているデータからこれらの4つのポイントがあります
ポイント =
[ 0.93 77.04 1,
1.37 155.22 0,
1.96 390.46 0,
2.41 846.87 3];
これをパス関数に入れると、点 1 と点 4 の間の線が得られますが、点 2 と点 3 を通っていません。 何か不足していますか?
ありがとう。
何をする必要があるかに応じて、複数の回答。 ここにあるいくつかの。
2D グラフの場合は、パス関数を使用できます。 スクリプト インデックスでは Bézier と綴られているため、Bezier を検索しても見つかりません。 代わりに zier を検索してみてください。@ザングレッグ@sheila_loring
この例では、スクリプト インデックスの例をドラッグ可能なハンドルで拡張しています。
// initial data; points 3 and 5 are not initially constrained about point 4
points = [
10 10 1,// move-to
30 70 0,// control point
40 10 0,// control point
50 40 3,// bezier
60 60 0,// control point
70 20 0,// control point
90 10 3 // bezier
];
// moving a square handle will call this function to
// copy the handle coordinates to the matrix
setpoint = Function( {index, x, y}, // parameters
{angle, distance}, // local variables
// copy to the matrix
points[index, 1] = x;
points[index, 2] = y;
// 3 and 5 are constrained about 4, comment out to see why...
// if the angles don't match, it isn't smooth
If( index == 3 | index == 5,
other = If( index == 3, 5, 3 ); // if I'm 3, he must be 5, etc
// trig in radians, 2*pi is 360
// atan does all 4 quadrants with 2 arguments
angle = ATan( points[index, 2] - points[4, 2], points[index, 1] - points[4, 1] );
// maintain other's distance
distance = Sqrt( (points[other, 2] - points[4, 2]) ^ 2 + (points[other, 1] - points[4, 1]) ^ 2 );
// fix other's angle to match my angle, but opposite me
points[other, 1] = points[4, 1] + distance * Cos( angle + Pi() );
points[other, 2] = points[4, 2] + distance * Sin( angle + Pi() );
);
// redraw
gb << inval;
);
New Window( "Example",
gb = Graph Box(
Fill Color( "blue" );
// there is no good shortcut for creating handles; the JSL holds the instances
Handle( points[1, 1], points[1, 2], setpoint( 1, x, y ) );
Handle( points[2, 1], points[2, 2], setpoint( 2, x, y ) );
Handle( points[3, 1], points[3, 2], setpoint( 3, x, y ) );
Handle( points[4, 1], points[4, 2], setpoint( 4, x, y ) );
Handle( points[5, 1], points[5, 2], setpoint( 5, x, y ) );
Handle( points[6, 1], points[6, 2], setpoint( 6, x, y ) );
Handle( points[7, 1], points[7, 2], setpoint( 7, x, y ) );
// construction lines
Pen Color( "red" );
Line( {points[1, 1], points[1, 2]}, {points[2, 1], points[2, 2]} );
Line( {points[3, 1], points[3, 2]}, {points[4, 1], points[4, 2]} );
Line( {points[4, 1], points[4, 2]}, {points[5, 1], points[5, 2]} );
Line( {points[6, 1], points[6, 2]}, {points[7, 1], points[7, 2]} );
// the bezier
Pen Color( "black" );
Path( points );
)
);ポイント 4 の移動を制限して、ポイント 3 と 5 も同様にドラッグする必要があることに気付きました。 (完了していません。簡単なはずです。)
Bezier control pointsベジェ制御点
たぶん、スプラインが必要です。 スクリプト インデックスのスプライン、p-スプライン、b-スプラインの違いがわかりません。 スプラインを使用しましたHeatColor vs スプライン vs 補間この曲線を作るために
spline coef, spline evalスプライン係数、スプライン評価
JMP の 3D OpenGL サポートでは、ベジェ スプラインもサポートされています。 https://www.jmp.com/support/help/14-2/bezier-curves.shtml面を描くのに役立つかもしれません。 悪い例が隠されていますFFT ビデオ
素晴らしい投稿@Duane_Hayes 3 次スプラインについて
途中で出くわしたもの: https://www.tinaja.com/glib/bezconn.pdf