すべての数値が記載されたデータがあります。 グラフビルダーで混合積み上げ棒グラフと並列棒グラフを混合してプロットするにはどうすればよいですか。 添付の 2 つの画像に示すようにグラフをプロットしたいと考えています。
最初の画像では、積み上げ棒グラフと横棒グラフを組み合わせた各変数のパーセンテージのみが表示されますが、2 番目の画像では変数の値も表示されます。
詳細な手順や JSL スクリプトを共有していただければ、大変助かります。
以下はサンプルデータです。
| 学生 |
合計_数学_物理学 |
数学 |
物理 |
合計_バドミントン_サッカー |
バドミントン |
フットボール |
| あ |
50 |
30 |
20 |
40 |
10 |
30 |
| B |
40 |
25 |
15 |
20 |
10 |
10 |
| C |
30 |
15 |
15 |
50 |
40 |
10 |
ありがとう :)


こんにちは@ラジャット
ほんの少しの作業で、ご希望の内容にかなり近づけることができると思います。
保存したスクリプトに再構成されたデータ テーブルを添付しましたので、ご自身で探してください。 私がやったことは次のとおりです。
1. 元のテーブルを積み重ねます。
Current Data Table() << Stack(
columns( :Maths, :Physics, :Badminton, :Football ),
Source Label Column( "Label" ), Stacked Data Column( "Data" )
);

これにより、以下が得られます。
2. アクティビティのグループ分け (数学/物理 vs バドミントン/サッカー) を可能にする変数が必要なので、新しい列 Group を追加し、AABBAABB などを繰り返します。これは任意の方法で行うことができます。たとえば、名義変数だけが必要です。 Sequence() を使用した別の方法は次のとおりです。
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3. グラフビルダー:
グラフを希望通りに表示するためにいくつかの設定を微調整しましたが、基本的な手順と短いビデオは次のとおりです。
手順:
- 「データ」列を Y ロールにドラッグします
- 両方の「合計」列を同時に Y ドロップ ゾーンの上部にドラッグします。
- ポイントをオフに切り替え、バー要素をオンに切り替えます
- 下のグラフの棒スタイル「データ」を「積み上げ」に変更します。
- 「ラベル」をオーバーレイロールにドラッグします
- 上部のバーのコントロールで、「変数」の下のオーバーレイの役割をオフにします。
- 「グループ」をX軸の役割にドラッグします
- コントロールパネルの上部プロットの「グループ」変数をオフにします
- 「学生」をグループ X ロールにドラッグします
- 下のグラフの「概要統計」を「因子の%」に変更します(ビデオではこれを示すのを怠っていました)。
- 各バーのラベルを「値によるラベル」に変更します。
これは与える:
ここから、さまざまなことができるようになります。 最初に示した最後のグラフでは、バーの幅を変更する (グラフを右クリックして [カスタマイズ] )、X 軸のラベルを削除する (軸をダブルクリックしてラベルのチェックを外す) などの追加を加え、グラフの間隔も変更しました (赤い三角>グラフ間隔)。 最終的なグラフのスクリプトは次のとおりです。
Graph Builder(
Size( 799, 566 ),
Show Control Panel( 0 ),
Graph Spacing( 2 ),
Variables(
X( :Group ),
Y( :Total_Math_Physics ),
Y( :Total_Badminton_Football, Position( 1 ) ),
Y( :Data ),
Group X( :Student ),
Overlay( :Label )
),
Elements(
Position( 1, 1 ),
Bar( Y( 1 ), Y( 2 ), Overlay( 0 ), Legend( 5 ), Label( "Label by Value" ) )
),
Elements(
Position( 1, 2 ),
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
SendToReport(
Dispatch(
{},
"Group",
ScaleBox,
{Min( -1.167069008972 ), Max( 2.147362067225 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Show Major Labels( 0 ) )}
),
Dispatch(
{},
"Total_Math_Physics",
ScaleBox,
{Min( 0.23109243697479 ), Max( 55 ), Inc( 10 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox,
{Min( 0 ), Max( 1.1209749344709 ), Inc( 0.2 ), Minor Ticks( 0 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Example" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 2 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 3 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 4 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 5 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 6 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
これがお役に立てば幸いです!
@ジュリアン
こんにちは@ラジャット
あなたの質問は良い質問ですが、JMP がその場でこれを実行できるとは思いません。
出力を生成するスクリプトを含む添付ファイルを参照してください。私のアプローチは、どちらかというとローテクな解決策です。各被験者のシェアを計算する列と、並列効果を考慮した(偽の)行を追加しました。これが完了したら、グラフのプロパティをいくつか変更して錯覚を完成させました。
これが正しい方向であるかどうかをお知らせください。
ロン
