[Script JLS] : 複数のグラフをまとめてプロットするループこんにちは、
私はJMPの初心者です。 それは強力なソフトウェアです!
そのため、1 つの X の関数として、異なる列 (実際には n 列ごと) から複数の Y をプロットできるスクリプトを作成したいと思います。
グラフビルダーインターフェースのおかげで書きましたが、ループでスクリプト化したいと思います。
分布をプロットするためにそれっぽいことをしました(残念ながら同じスケールではありません...)
//Distributions Std Dev
New Window( "Side by Side",
H List Box(
Distribution(
Continuous Distribution( Column( :median_range_mm ))
);
for ( p = 2, p <= 64, p++,
nom = "median_range_mm " || char(p);
col = Column(nom);
Distribution(
Continuous Distribution( Column( col ), Std Error Bars( 1 ) );
/*SendToReport(
Dispatch(
{"Distributions", Column( col )},
"1",
ScaleBox,
{Min( 1450 ), Max( 1820 ), Inc( 20 ), Minor Ticks( 0 ),
Label Row Nesting( 1 )}
)
)*/
)
)
)
これは私が主な問題に対して試したもので、結果はグラフビルダーのウィンドウが開くだけです。
列 [ref, ref 1 , ref 2 until ref 64] を Y 軸に、currentTimeMillis を X 軸にプロットしたいと思います。
New Window( "Ref",
H List Box(
Graph Builder(
For (r = 2 , r <= 64, r++,
name = "ref " || char(r);
col = Column(name);
Variables( X( :currentTimeMillis ), Y (Column (col), Position( 1 ) ) ),
Elements(
Points( X, Y(r) , Legend( 29 ) ),
Smoother( X , Y(r), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
)
);ご協力いただきありがとうございます。
乾杯
Re: [Script JLS] : 複数のグラフをまとめてプロットするループ出力オブジェクトを簡単に作成でき、事前に作成しておき、ユーザーの要求に応じて表示できます。あるいは、JMP の速度のおかげで、アプリケーションの多くはユーザーのリクエスト時に特定の出力を生成します。また、ユーザーが分析および表示する列をリストから選択できるようにする列スイッチャーも検討する必要があります。
Re: [Script JLS] : 複数のグラフをまとめてプロットするループ単一の H リスト ボックスにすべてのグラフをプロットする代わりに、後で使用できるように個々のグラフ (簡単アクセス リストなど) を保存することは可能ですか?ありがとう。
Re: [Script JLS] : 複数のグラフをまとめてプロットするループ少し混乱しています....しかし、解決策の考えられる例としてこのコードを提供します。指定した最後のコード部分から、データ テーブルの列の名前を「Ref」に変更していることがわかります。JMP では同じ名前の列を 2 つ持つことができないため、「Ref」という名前を変更しようとする 2 番目の列には、実際には「Ref 2」という名前が付けられます。そしてそれはコラム「Ref 64」まで続きます。また、列「currentTimeMillis」の名前についてコードを再確認することをお勧めします。コードでは、実際にその列の名前を (同じ名前に) 64 回変更しています。
以下は私の新しいコードです....サンプル データ テーブルを使用しています....Ref から Ref 64 と呼ばれる列はすべて連続した順序になっていますが、JMP は実際には気にしないため、コードは次のようになります。列が 700 以上の列に分散されているデータ テーブルでも機能します。
Names Default To Here( 1 );
// Build some sample data
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Column( dt, 6 ) << set name( "ref" );
For( i = 7, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
// Build the JSL code for the Graph Builder
theExpr = "dt << Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( :ref )";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( :ref " || Char( i ) || ", Position( 1 ) )"
);
theExpr = theExpr || "),
Elements(
Points(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || "
,Legend( 5 )
),
Smoother(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || " ,
Legend( 6 )
)
)
)";
// Execute the generated code
Eval( Parse( theExpr ) );
Re: [Script JLS] : 複数のグラフをまとめてプロットするループジムさん、ご返信ありがとうございます!
しかし、私は自分の問題を誤解しているかもしれません。
確かに、私はそうしたいですすべてのプロットを同じグラフ上に表示。
また、私の Y 列はすでに 11 列ごとに設定されており、 currentTimeMillis は最初に 1 回だけ表示されます。
//Set columns
For( i = 1, i <=709 , i++,
For ( j = 0, j <= 63, j++,
If ( i == 2, Column(i) << set name( "currentTimeMillis" ),i == 15 + 11*j, Column(i) << set name( "ref" ),
)
)
)最後に、「__col__」が定義されていないため(「col」は定義されていますが、配布用の別の関数に定義されています)、なぜここでそれを使用したのか理解できません。
再度、感謝します。
Re: [Script JLS] : 複数のグラフをまとめてプロットするループこれは私がそれを行う方法の例です
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
For( i = 6, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
New Window( "Ref",
hlb = H List Box(
)
);
For( r = 2, r <= 64, r++,
name = "ref " || Char( r );
Eval(
Substitute(
Expr(
outputhlb = H List Box(
Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( Column( __col__ ), Position( 1 ) )
),
Elements(
Points( X, Y( r ), Legend( 29 ) ),
Smoother( X, Y( r ), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
),
Expr( __col__ ), Parse( ":" || name )
)
);
hlb << append( outputhlb );
);