这样做的方法是简单地
- 堆叠列
- 创建一个对数据进行分组的新列
- 以分组列作为 X 轴运行图形生成器

下面是一个使用 JSL 的示例,但是脚本中的每个步骤都可以轻松地以交互方式完成。请参阅下面的脚本
names default to here(1);
// Create a sample data table for illustration
dt=new table("TO_CPTO_C",
add rows(5),
new column("A.1", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("A.2", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("A.3", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("A.4", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("A.5", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("A.6", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("B.1", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("B.2", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("B.3", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("B.4", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("C.1", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("C.2", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("C.3", formula(randomuniform(70,140)),format("fixed dec",6,2)),
new column("C.4", formula(randomuniform(70,140)),format("fixed dec",6,2))
);
// Pause so one can see initial data table before moving on
Wait( 5 );
// Stack the columns
// Tables==>Stack
dtStack = dt << Stack(
columns(
:A.1,
:A.2,
:A.3,
:A.4,
:A.5,
:A.6,
:B.1,
:B.2,
:B.3,
:B.4,
:C.1,
:C.2,
:C.3,
:C.4
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Pause so one can see stacked data table before moving on
Wait( 5 );
// Create a grouping column
dtStack << New Column("Group", character, formula( left(:Label,1 )));
// Pause so one can see new column before moving on
Wait( 5 );
// Create the Graph, using the Group column as the X axis and Data as the Y axis
dtStack << Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :Group ), Y( :Data ) ),
Elements( Box Plot( X, Y, Legend( 3 ) ) )
);