你好,
我正在尝试使用图形生成器创建堆叠条形图,其中包含每个堆叠条形的标签以及总计。下图是我希望实现的图表的标记版本,我手动插入了每个条形的总计。(附上我使用的示例 JMP 数据集以及嵌入式图形生成器脚本)
有谁知道是否有办法通过图形生成器/另一个平台或 JSL 脚本创建此视图?
谢谢,
爱华

@tx尼尔森, @gzmorgan0
非常感谢您的快速回复和解决此问题的创造性方法!我忘记提到,我每周需要为大约 100 个不同的项目循环浏览并生成这些图。所以,我认为 gzmorgan0 提供的脚本更适合我。 我刚刚尝试了一下,它非常适合我的需求。再次感谢!
@AW ,
@tx尼尔森提供了很好的解决方案。 标签需要一些脚本。这是使用 GraphBuilder 的另一种方法。我认为通过保存的脚本(如下)更容易看到模式。 这可以通过 UI 并关闭 Overlay 变量来完成。 该图有 3 个元素:
- 使用覆盖变量的堆叠条
- 不使用覆盖变量的栏
- 不使用叠加变量的摘要统计总和的标题
注意我将您的数据表保存到我的 c:/temp/ 驱动器中。 Caption elemnet 不具备 Jim 的解决方案提供的放置灵活性。
Names Default to Here(1);
dt = open("C:/temp/Sample Dataset for Stacked Graph Builder Bar Chart.jmp");
gb = dt << Graph Builder(
Size( 534, 492 ),
Show Control Panel( 0 ),
Variables(
X( :Test_Step_Duration ),
Y( :Test ),
Group X( :Sample Information ),
Overlay( :Test_Step )
),
Elements(
Bar(
X,
Y,
Overlay( 0 ),
Legend( 11 ),
Bar Style( "Stacked" ),
Summary Statistic( "Sum" )
),
Caption Box(
X,
Y,
Overlay( 0 ),
Legend( 13 ),
Summary Statistic( "Sum" ),
Per Factor( 1 )
),
Bar( X, Y, Legend( 14 ), Bar Style( "Stacked" ), Label( "Label by Value" ) )
),
Local Data Filter(
Add Filter( columns( :Project ), Where( :Project == "Project 1" ) )
),
SendToReport(
Dispatch(
{},
"Test_Step_Duration",
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
11,
Properties(
-1,
{Transparency( 0.1 )},
Item ID( "Sum(Test_Step_Duration)", 1 )
)
), Legend Model(
14,
Properties( 0, {Fill Color( 69 )}, Item ID( "Step 1", 1 ) ),
Properties( 1, {Fill Color( 67 )}, Item ID( "Step 2", 1 ) ),
Properties( 2, {Fill Color( 36 )}, Item ID( "Step 3", 1 ) ),
Properties( 3, {Fill Color( 40 )}, Item ID( "Step 4", 1 ) ),
Properties( 4, {Fill Color( 38 )}, Item ID( "Step 5", 1 ) ),
Properties( 5, {Fill Color( 39 )}, Item ID( "Step 6", 1 ) )
)}
),
Dispatch(
{},
"X title",
TextEditBox,
{Set Text( "Test_Step_Duration and Total" )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {11, [-1], 14, [0, 1, 2, 3, 4, 5]} ),
Position( {-1, 0, 1, 2, 3, 4, 5} )}
)
)
);
txtseg = gb << Xpath("//TextSeg");
txtseg << Set Font("Segoe UI", 10, "Bold");
txtseg[1] << {Transparency( 0 ), Text Color( "White" )}; //clear out the statistic

您可以将自己的自定义图形脚本添加到图形生成器,右键单击图形,然后选择“自定义”,您将看到添加的 JSL。我只添加了前 2 个栏的代码,但它应该向您展示如何继续处理所有这些栏。

附上脚本