图形生成器、如何更改元素的颜色以及有关 SendToReport 语法的信息你好,
我创建一个具有动态内容的图表(变量数量在运行时确定)。
我想在设置图形生成器后更改一些内容,例如分配新颜色。 后来这样做的原因是因为,在执行脚本的其他部分(我无法提前运行)之前,我不知道所做的更改。
我已将我的基本问题简化为以下示例:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
// do some other stuff incl. addition or removal of variables to gb
// how do I *MODIFY* the color of Points, Smoother here or add a Line Plot?
如果有帮助的话,我知道变量在图中的位置(上例中的 1,1)。
干杯,
亚历克斯
回复: 如何改变线条的颜色嗨,亚历克斯,
回复较晚,抱歉。
假设您正在发送以下图例模型消息。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
- 第一个参数 (2) 是引用 ScaleBox 中特定图例模型的唯一 ID。 在上面的示例中,值 1 表示包含点的图例模型,而值 2 表示更平滑的线条。
- 第二个参数 (Properties( 1, {Line Color( 4 )} )) 包含有关图例模型中的哪个元素应用给定属性集的信息。
- Properties (1) 中的第一个参数是一个从零开始的项目编号,用于标识要应用新属性的项目。
- Properties ({Line Color( 4 )}) 中的第二个参数是应用于给定图例模型项的属性列表。 在本例中,我们将线条颜色更改为绿色。
这里有一些例子:
以下脚本将第一个图例模型(点)中的第一项设置为绿色。 在本例中,第一项是“F”。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 1, Properties( 0, {Line Color( 4 )} ) )}
)
)
);
(从现在开始,我将只给出图例模型部分来替换上面的脚本)
以下图例模型片段将更改点图例模型中第二个项目(“M”)的颜色。
Legend Model( 1, Properties( 1, {Line Color( 4 )} ) )
以下图例模型片段将更改更平滑的线条图例模型中第一项(“F”)的颜色。
Legend Model( 2, Properties( 0, {Line Color( 4 )} ) )
以下图例模型片段将更改更平滑的线条图例模型中第二个项目(“M”)的颜色。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
注意:更改平滑线的线条颜色也会更改相应点的颜色,但更改点的点颜色不会影响关联的平滑线的颜色。
回复: 如何改变线条的颜色感谢您的反馈。
您还可以解释一下图例模型语法吗?
回复: 如何改变线条的颜色SendToReport 参数的语法如下(来自脚本索引):
SendToReport( Dispatch( "Outline name", "Element name", Element type, command );
调度命令中的第二个参数(“元素名称”)用作标识符来查找正确的 DisplayBox。 例如,当对 FrameBox 使用 Dispatch 命令时,此参数将与“helpKey”属性匹配。 元素类型参数告诉 JMP 要查找的属性类型(因为不同的 DisplayBox 的属性类型不同)。
对于 ScaleBox(根据本例的需要),元素名称参数引用“charID”属性。 Graph Builder 出于各种目的创建多个 ScaleBox,但将 charID“400”分配给发送图例模型等消息所需的 ScaleBox。
下面是图形生成器的 XML 摘录(使用下面的脚本创建),其中显示了创建的五个 ScaleBox。 您会注意到其中一个比例框的 charID 为“400”,这是我们需要用于图例模型消息的比例框。
<..truncated..>
<..truncated..>
<..truncated..>
使用图例模型消息的另一种方法是将其直接发送到此 ScaleBox。 引用此 ScaleBox 的一种方法是使用 XPath,如下所示。 此方法引用 charID 为“400”的 ScaleBox。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
scalebox = gb << xpath("//ScaleBox[@charID=\!"400\!"]");
scalebox << Legend Model( 2, Properties( 1, {Line Color( 4 )} ) );
下面的脚本执行相同的操作,但使用 SendToReport 方法。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )}
)
)
);
谢谢,
回复: 如何改变线条的颜色这是对 JMP 开发的一个很大的要求,即记录图形生成器的内部工作原理。
回复: 如何改变线条的颜色我做了同样的事情,但现在我确实看到了生成的代码,我需要能够理解它。
我找不到 Legend Model 的文档,也找不到“400”的文档。
这就是为什么我寻求帮助并且非常感谢反馈。
回复: 如何改变线条的颜色并未记录图形生成器的所有“内部”语法。 当涉及到 GB 时,我会执行以下操作:
创建一个看起来与我想要的一模一样的图表,包括图表类型、符号、颜色、线条等。
点击红色小三角即可获取JSL代码
将 JSL 代码嵌入我的脚本中
基本上我让 GB 完成繁重的工作,然后使用它生成的代码。
回复: 如何改变线条的颜色你好伊恩,
谢谢你的好例子。
您能否指出脚本指南中包含有关图例模型语法、值“400”含义的信息的部分?
我搜索了“传奇模型”这个词 - 没有找到。 400 有几次点击,但我无法识别相关内容。
感谢您的帮助!
干杯,
亚历克斯
回复: 如何改变线条的颜色只需以交互方式执行此操作,然后检查 JMP 为您生成的代码即可。 调整你的例子:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
// Add 'weight'
Wait(2);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable({Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )});
// Change the colour of the points and smoother for 'weight' to green
Wait(2);
gb << SendToReport( Dispatch({}, "400", ScaleBox, {Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )} ) );
关于不太重要的问题,您可以查看“帮助>书籍>脚本指南”,它通常会提供一些提示。
回复: 如何改变线条的颜色我也有过类似的问题,但从未得到答案。 看来这个论坛的JMP专家回避这个问题或者不鼓励JMP用户更深入地了解这个问题。
回复: 如何改变线条的颜色这是一个更好的例子。我如何改变点的颜色和权重的平滑度?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable(
{Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )}
);
gb << SendToReport(
Dispatch( {}, "400", ScaleBox, {Legend Model( 1, Properties( 0, {Line Color( RGB color(31,119,180) ), Fill Color( 0 )} ) )} )
);
不太重要的问题:
在这种情况下“400”意味着什么?
回复:如何更改线条的颜色您好@Justin_Chilton ,除了helpKey和charID之外,还有哪些其他标识符可用于元素名称?
当我更改轴标签时,JSL 代码显示
gb << SendToReport( Dispatch( {}, "<STRONG>X Title</STRONG>", TextEditBox, {Set Text( "new" )} ))...但是X 标题没有显示在显示树的 XML 代码中。它是哪个标识符?
与展示盒对话