JSL スクリプト: データ テーブルのすべての列をプロットするグラフ ビルダーこんにちは、みんな、
長年の JMP ユーザー (JSL スクリプトの初心者)、初めての投稿者。 助けていただければ幸いです。
次の 2 つのことを行うスクリプトを作成しています。
1. テキスト ファイルを開き、数値データをインポートし、後で開くことができるようにデータ テーブルを保存します。
2. グラフ ビルダーを使用して、すべての「y 軸」列を一度にプロットします。
項目 #1 については問題ないので、それについてのコメントは必要ありません。 項目 #2 が問題を引き起こしています。 すべての y 軸列を 1 つのグラフに一度にプロットする方法が見つかりませんでした。
データ テーブルには 1 つの X 軸データ列 (結果のグラフの X 軸で使用されるデータ) がありますが、グラフの同じ Y 軸上にある必要があるデータの 1 つ以上の列を含めることができます。 これらのデータを視覚的に比較しようとしているのですが、すべてがプロットされた 1 つのグラフを使用すると非常に便利です。 おそらく、データを 1 つの x および 1 つの y データセットにスタックし、3 番目の列をオーバーレイに使用することもできますが、それはやりたくありません。
何か案は?
Re: JSL スクリプト: データ テーブルのすべての列をプロットするためのグラフ ビルダーありがとう、ジム
これは完璧に機能しました。 そして、マニュアルを読むよう優しく促していただいたことに感謝します。もう一度読みます。あと数パーセントは保存しておきたいと思っています。 でも、私はいつもマニュアルから学ぶわけではないので、ここに来たのです。 正直に言うと、あなたのやったことを理解するのに 5 時間ほどかかったと思います。そのため、貴重な時間を節約し、将来使用できる新しいものを示してくれたので、あなたの専門的なアプローチに感謝しています。 乾杯
Re: JSL スクリプト: データ テーブルのすべての列をプロットするためのグラフ ビルダー- スクリプト ガイドを読む必要があります
- 私は、グラフを作成するために必要な JSL がどのようなものであるかを示すスクリプト、または少なくともあなたが望むグラフの私の解釈を示したスクリプトを提供しました。
- インタラクティブに実行する場合の私の提案は、希望どおりのグラフを作成する方法を提供し、JMP にグラフのスクリプトを生成させるだけで、必要なものが表示されるというものです。グラフを作成するために作成されます。
- Semiconductor Capability データ テーブルを取り込み、すべての連続列を使用してオーバーレイ グラフを生成するスクリプトを添付しました。最初の連続列は X 列として使用され、残りは複数の Y 列として使用されます。
- スクリプトで使用されるすべての関数は、スクリプト インデックスに文書化されています。ただし、さまざまなツールと構造を学ぶことで、独自に作成したスクリプトを作成できるようになります。
- コミュニティ ディスカッション グループは、JSL 内のコンポーネントを理解するのに問題が生じた場合に役立ちます。
- 入力動的データ テーブルから分析やグラフなどを構築する例は、コミュニティ サイトのディスカッション全体で利用できます。解決策については、すでに投稿されたディスカッションを参照する必要があります
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Re: JSL スクリプト: データ テーブルのすべての列をプロットするためのグラフ ビルダーこんにちは、ジムさん
タイムリーなご対応ありがとうございます! あなたの投稿は、スクリプトで実行したいことを正確に説明しています。いいえ、これを対話的に実行しているわけではありません。 グラフはスクリプトを使用して作成する必要があるため、スクリプトを実行すると次のようになります。
1. テキスト ファイルを開き、すべてのデータをデータテーブルにロードし、データ テーブルを保存します (スクリプトのこの部分はすでに問題なく完了しています)。
2. すべての Y データ列と 1 つの X データ列の単一のプロットを作成します (これは私が助けを必要とするものです)
データ ファイルには、任意の数の y データ列 (異なる名前) を含めることができますが、x データ列は常に 1 つだけです。 すでに作成したローダー スクリプトは、すべてのデータをロードし、列に名前を付けます。ファイルがデータ テーブルにロードされるまで、y データ列が何列あるかは事前にわかりません。
最初に考えていたのは、グラフビルダーの「Y」変数に列のリストを送信することでしたが、それが可能かどうかはわかりません。 他の提案も歓迎しますが、多くの y データ列を持つ 1 つの x データ列のデータ テーブル構造を保持したいと考えています (つまり、データをスタックしたくない)。
-デイブ
Re: JSL スクリプト: データ テーブルのすべての列をプロットするためのグラフ ビルダーグラフ ビルダーを対話的に実行する場合、複数の列を Y 軸としてプロットするには、グラフ化するすべての列を取得し、それらを Y ドロップ ゾーンにドラッグするだけです。

これを行うための JSL は以下のとおりです
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);