SendToReport 功能的图形构建器内的 If 语句你好,
我希望仅当 Y 轴是某个列(例如错误)时才能更改图表的 Y 轴。 但看起来 graphbuilder 无法识别其中的 if 。 但是,当我不使用 if 语句时,这工作得很好。 但我希望能够对各种图形使用相同的图形函数。
graph_func = function({stackdt,title},{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables(
X( :names ),
Y( as column(title) ),
Group X( :Type ),
Overlay( :GROUPs )
),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Type),
Display( :Type, Size( 160, 30 ), List Display )
) ),
if(contains(title,"error"),
SendToReport(
Dispatch(
{},
title,
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 10 ), Min( 0.00001 ), Max( 0.03 ),
Inc( 1 ), Minor Ticks( 1 )}
)
) , ) );
return(gb);
);回复:SendToReport 功能的图形生成器中的 If 语句
由于公司的隐私政策,无法真正提供 JSL 或整个图表,但 X 轴如下所示。 Group Y 轴上有 3 组,Y 轴上有误差。 我希望能够看到 y 轴上的所有中间点,而不仅仅是最小值和最大值。
另外,当我根据页面拆分不同的组时,这只适用于第一个图表,而不适用于后续图表。
回复:SendToReport 功能的图形生成器中的 If 语句您能否提供您的 JSL 和显示输出的图像。
回复:SendToReport 功能的图形生成器中的 If 语句感谢回复。 我尝试了第二个解决方案,因为这对于我正在做的事情来说看起来很简单。 它可以工作,但 Y 轴现在只有 2 个点,即最小值和最大值。 如何让它在 Y 轴上显示比例?回复:SendToReport 功能的图形生成器中的 If 语句一种更简单的方法是将消息传递给图形生成器创建的显示对象。生成图表后即可传递消息。所有这些消息都记录在脚本索引中
帮助==>脚本索引
然后寻找AxisBox对象
这是对您的代码的修改,应该可以工作
graph_func = Function( {stackdt, title},
{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables( X( :names ), Y( As Column( title ) ), Group X( :Type ), Overlay( :GROUPs ) ),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter( Add Filter( columns( :Type ), Display( :Type, Size( 160, 30 ), List Display ) ) )
);
If( Contains( title, "error" ),
report(gb)[AxisBox(2)] << min(0.00001) << Max( 0.03 ) << Inc( 1 ) <<MINOR ticks=""></MINOR>回复:SendToReport 功能的图形生成器中的 If 语句正如我在其他讨论中提到的,Send To Report() 旨在让 JMP 能够为您保存脚本并捕获您可能已完成的任何自定义。 当您编写脚本时,有更好的方法来自定义窗口。 例如,
gb = dt << Graph Builder( /* usual plot arguments */ );
If( error plot,
Report( gb )[AxisBox(1)] << Min( 0 ) << Max( 10 ) << Inc( 1 );
);
我将使用默认自定义启动图形生成器(不是为了绘制错误)。 我将有一种方法来标记异常(绘制错误)并使用 If() 函数来确定是否应将消息发送到对象。 在上面的示例中,错误图参数可以是一个标志(布尔变量),也可以是一个在绘制错误时返回 true 的表达式。 在本例中,消息被发送到垂直轴以更改比例。 您可以使用此图示构建您喜欢的任何自定义。