変数別集合棒グラフこんにちは、みんな、
これは簡単な質問のように聞こえるかもしれませんが、これを機能させる方法がわかりません。
複数のサンプルでテストを実行したところ、サンプルごとに、サンプルを構成する 3 つの異なるコンポーネントのパーセンテージが出力されました。
4 つの列を持つデータ テーブルを設定しました。1 つはサンプル名用、もう 1 つは 3 つの成分のパーセンテージ用です。
添付の図 (Excel で作成) に示すように、クラスター化された棒グラフを作成しようとしています。データは、3 つのコンポーネントに対応する 3 つの異なるクラスターにグループ化されています。
最初にすべてのコンポーネント列を積み重ねることができることはわかっています (「変数によるクラスタリング」で説明)ここ);ただし、それは非常に長いテーブルになり、ナビゲートするのが難しくなります (複数のタイプのテストがあり、それぞれが異なるコンポーネントを出力します)。 また、ナビゲートしやすい元のデータ形式用とクラスター化された棒グラフ用の 2 つの個別のテーブルが必要になります。
これを回避するために、2つの異なる方法を考えています。
1) 各テストについて、各コンポーネントの結果を並べてプロットします。 それらすべてが同じ y 軸を共有する方法はありますか?
2) 列の積み重ね方法を使用して、2 つのテーブルを 1 つに結合して、元のテーブルにスクリプトを保存し、クリックするとクラスター化された棒グラフを自動的に生成する方法はありますか? 積み上げテーブルを生成するスクリプトを保存できることは承知していますが、それでも集合棒グラフを再作成する必要があります。
ありがとう!
Re: 変数別クラスタ棒グラフありがとう! それが私が疑問に思っていたことです。 おっしゃる通り、各操作のスクリプトにアクセスできるので、大したことではありません。
Re: 変数別クラスタ棒グラフジム、
あなたのコードを説明してくれてありがとう - 物事が非常に明確になりました。 簡単な質問 - 新しい積み上げテーブルに複数の操作を追加したい場合でも、すべての操作の前にそれを呼び出す必要がありますよね? たとえば、積み重ねたテーブルからヒストグラムもプロットしたい場合は、次の行を追加するだけですか?
dtStack << Distribution( Continuous Distribution( Column( :Data ) ) );
Re: 変数別クラスタ棒グラフはっきりさせておきますが、JMP でのすべての操作を 1 つのスクリプトに記録する方法はありません。Excel ではこの方法でマクロを記録できますが、JMP では記録できません。
代わりに、小さな赤い三角形をクリックして [スクリプトの保存] オプションのいずれかを選択すると、JMP で実行するすべてのプラットフォームの JSL にアクセスできます。
Re: 変数別クラスタ棒グラフスクリプトを作成する私の方法を説明する方法として、このディスカッションで提供したスクリプトを作成するために私が行ったことを見てみましょう。
- データ テーブルが提供されなかったので、独自のサンプル データ テーブルを作成する必要がありました。
- サンプル データ テーブルのコピーを提供したかったので、テーブルを保存してアップロードするか、それとも単にスクリプトに含めるかを決定する必要がありました。非常に控えめなサイズなので、スクリプトをそのまま入れることにしました。
- そこで、スクリプト ウィンドウを開きました。
- 手動で入力しました
Names Default to Here(1);
これは通常、すべてのスクリプトの最初のステートメントにする必要があります。これにより、このスクリプトの JSL 変数がこのスクリプトに分離され、他のスクリプトに干渉しないことが保証されます。
- 次に、作成したデータ テーブルに移動し、テーブル パネルの赤い三角形をクリックして、[テーブル スクリプトのコピー] を選択しました。これにより、現在存在するテーブルを生成するスクリプトが貼り付けバッファーに配置されました。
- 次に、スクリプト ウィンドウに戻り、スクリプトの最初の行のすぐ下に貼り付けました。
Names Default to Here(1);<BR />
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
また、テーブル定義の前に dt = を追加しました。これにより、"data table("example")" のより正式な参照ではなく、"dt" でこのデータ テーブルを参照できるようになりました。
- 次に、データ テーブルとグラフ ビルダーをインタラクティブに操作して、必要なグラフを作成するために何をしなければならないかを考え始めました。これは反復的な方法論であり、必要な結果が得られるまで、複数のデータ テーブル操作とグラフ ビルダーの実行が必要でした。
- そのため、結果に満足したら、結果を生成するのに何が必要かを検討しました。 これは、データを積み重ねる単純なテーブル操作であり、積み重ねられたデータに対してグラフ ビルダーを実行しました。
- まず、スクリプト コードを取得する必要がありました。このコードは、積み上げデータ テーブルのテーブル パネルですぐに使用できます。テーブル パネルの「ソース」エントリの前にある緑色の三角形を右クリックすると、[編集] を選択できます。これにより、このデータ テーブルの再作成に使用できる JSL が表示されます。すべてのコードを選択し、スクリプト ウィンドウの既存の JSL の直後に貼り付けバッファにコピーしました。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);また、スタック「dtStack =」へのポインターを追加し、元のデータ テーブルへの長い参照を「dt」の短い参照に置き換えたことに注意してください。
- 次に、Graph Builder の出力に移動し、赤い三角形をクリックして、[Save Script==>To Clipboard] を選択しました。
- 次に、クリップボード (ペースト バッファ) をスクリプトに貼り付けました。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);Graph Builderステートメントの前に「dtStack <<」を追加したことに注意してください。これは、Graph Builder が元のコードではなく、積み重ねられたデータに対して確実に実行されるようにするための最良の方法です。
これが結合スクリプトの作成に使用されるプロセスです。ご想像のとおり、さまざまなプラットフォームをこのようなスクリプトに追加して、元のデータ テーブル ("dt") またはスタック データ テーブル ("dtStack") を使用できます。また、追加する必要がある他のデータ テーブル操作などがある場合もあります。
データテーブルに保存したスクリプトの一括コピーに関しては、それができるかどうかはわかりませんが、私自身は問題を抱えていません。ほとんどの場合、自分でデータ分析を行うのではなく、スクリプトを作成しようとしています。
Re: 変数別クラスタ棒グラフええ、私はあなたの意図を誤解しているように聞こえます。
「」についてさらに詳しく説明していただけますかテーブル操作スクリプトとプラットフォーム保存スクリプト」ビット?
たった今わかったことの 1 つは、データ テーブルのスクリプト全体を実際にコピーできることです。 したがって、これだけで、現在必要なものには十分なはずです。 最初に個々のレポートを新しいスクリプトとしてデータ テーブルに保存する必要がありますが、個別ではなく同時にすべてをコピーできるようになりました。
Re: 変数別クラスタ棒グラフJMP の方法は、単純に各グラフからスクリプトをデータ操作と共に取得し、それらを 1 つのスクリプトに配置することです。
スクリプトをデータ テーブルに保存する方法に沿って考えているように聞こえます。それは私が示していることではありません。テーブル操作スクリプトとプラットフォーム保存スクリプトを新しいスクリプト ウィンドウに保存しようとしています。
Re: 変数別クラスタ棒グラフ私はあなたが言っていることを理解しました。それはまさに私がしたことです - テーブルスタックスクリプトとグラフビルダースクリプトを組み合わせました.
私はちょうど 2 つではなく、複数の操作 (たとえば、2 番目のテーブルで複数のグラフを生成する) を行う必要がある場合を求めていました。彼ら。 必要だというわけではありませんが、JMP にそのような機能があるかどうかは疑問です。
Re: 変数別クラスタ棒グラフ答えはイエスです。
私が投稿したJSLは、ほとんどがJMPで書かれています。実行するすべてのプラットフォーム、および実行する File==>Tables 操作のそれぞれは、インタラクティブに作成されたデータ テーブルまたは表示を再生成する JSL を表示します。
スタッキングによって新しいデータ テーブルを作成すると、新しいテーブルの「ソース」エントリには、データ テーブルを作成する JSL が含まれます。
グラフ ビルダー プラットフォームの場合、赤い三角形に移動して [スクリプトの保存] を選択すると、グラフを再作成するスクリプトが提供されます。
Re: 変数別クラスタ棒グラフありがとう!
JMPでスクリプトを作成したことはありませんが、元のテーブルのスタックスクリプトとスタックテーブルのグラフビルダースクリプトを少し変更して1つにマージし、機能させることができました。 まだ新しいテーブルを生成する必要がありますが、少なくとも保持するテーブルは 1 つだけです。
生活を楽にするために、JMP でスクリプトを作成することを学び始める必要があるようです。
好奇心からですが、JMP には、ユーザー インターフェイスで行ったことをスクリプトに「記録」できる機能はありますか?
Re: 変数別クラスタ棒グラフシンプルな Stack と Graph Builder でグラフを再現できました。

Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);