我有一个包含所有数值的数据。 我将如何在图形生成器中绘制混合堆叠和并排条形图的混合。 我想绘制我的图表,如所附的两张图片所示。
第一个图像仅显示混合堆叠和并排条形图中每个变量的百分比,但在第二个图像中也显示变量的值。
如果您能分享详细的过程或JSL脚本,那将会有很大的帮助。
以下是示例数据。
| 学生 |
数学物理总计 |
数学 |
物理 |
羽毛球足球总计 |
羽毛球 |
足球 |
| A |
50 |
30 |
20 |
40 |
10 |
30 |
| 乙 |
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. 我们需要一个变量来划分活动分组(数学/物理与羽毛球/足球),因此我将添加一个新列“分组”,并迭代“AABBAABB”等。您可以通过任何方式执行此操作就像,你只需要一个名义变量。 这是 Sequence() 的另一种方法:
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3.图形生成器:
我调整了一些设置以使图表看起来像我所做的那样,但以下是基本步骤和一个简短的视频:
脚步:
- 将“数据”列拖至Y角色
- 同时将两个“总计”列拖动到 Y 放置区域的顶部
- 关闭点,然后打开 Bar 元素
- 将下部图表的条形样式“数据”更改为“堆叠”
- 将“标签”拖至叠加角色
- 在顶部栏的控件下,关闭“变量”下的覆盖角色
- 将“组”拖至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 可以即时做到这一点。
请参阅随附的我的文件,其中包含用于生成输出的脚本。我的方法更多的是一种低技术含量的解决方案。我添加了列来计算每个主题的份额和(假)行以允许并排效应。完成此操作后,我修改了图形属性中的一些内容以完成幻觉。
请告诉我们这是否是正确的方向。
罗恩
