曲線の直線部分の周囲にある一定範囲のデータ ポイントを取得し、線形近似を使用してそこから x 切片を抽出しようとしています。直線の方程式を表示することはできますが、それを使ってできることはあまりないようです。
少なくとも、その方程式を取得し、y = 0 のときの x を解き、その数値をグラフの下に表示したいと思います。
この情報を引き出す最善の方法は何でしょうか?
理想的なシナリオでは、データ範囲全体を表示できますが、現在表示されているデータ ポイントの範囲のみが収まります。
ご協力ありがとうございます。
理想的なのは次のようになります。

データ フィルターを使用した私のプロット:

コード:
Graph Builder(
Size( 618, 525 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :V1 ), Y( :I1 ), Page( :Sweep Name ), Overlay( :Test Count ) ),
Elements(
Line Of Fit( X, Y, Legend( 18 ), Confidence of Fit( 0 ) ),
Points( X, Y, Legend( 19 ) )
),
Local Data Filter(
Add Filter(
columns( :I1, :Test Count ),
Where( :I1 >= 0.003 & :I1 <= 0.008 ),
Where( :Test Count == "1" ),
Display( :Test Count, N Items( 15 ), Find( Set Text( "" ) ) )
)
),
SendToReport(
Dispatch(
{},
"I1",
ScaleBox( 2 ),
{Min( 0 ), Max( 0.008 ), Inc( 0.001 ), Minor Ticks( 1 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "On Voltage" )} )
)
);
フィルタを使用してから、その小さなサブセットに線をフィットさせるため、フィットモデルを使用して線をフィットします。 そうすれば、[推定]>[逆予測]の下の赤いポップアップメニューから[逆予測]オプションを使用できます。 Yを0にすると、JMPはXを検出し、Xの95%信頼区間を提供します。
の素晴らしいアイデアを実行する@Dan_Obermillerこれは次のようになります。
Names Default To Here( 1 );
// generate data
dt = New Table( "Characteristic curve",
add rows( 21 ),
New Column( "V", set values( Matrix( -10 :: 10 ) / 10 ) ),
New Column( "I", set each value( If( Exp( :V ) < 1.5, 0, Exp( :V ) - 1.5 ) ) )
);
dt << show window( 0 );
// create a dashboard to display all windows
nw = New Window( "Dashboard Inverse Prediction",
H List Box( vlb_left = V List Box(), vlb_right = V List Box() ),
<<ON close="">= 0.2 ) ) )
)
);
// get report and make into data table
tb_lst = Report( fm_obj ) << xpath( "//TableBox" );
result_dt = tb_lst[N Items( tb_lst )] << make data table;
result_dt << show window( 0 );
// and fill into dashboard
vlb_left << append( outline box("Inverse Prediction", dg1 = result_dt << new data box()) );
dg1 << close side panels( 1 );
dg1 << set height( 30 );
// place GraphBuilder into dashboard
vlb_left << append(// visualize
dt << Graph Builder(
show control panel( 0 ),
Variables( X( :V ), Y( :I ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
)
);
vlb_left << append( dg2 = dt << new data box() );
dg2 << close side panels( 1 );
</ON>