有条件地抑制图表中的文本框<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
一般来说,我对 jsl 和脚本编写很陌生,但我正在尝试根据一列的条件创建变异性图表。
当我在设置下使用 where 时,它会在绘图上方生成一个文本框,该文本框与 where 中的整个字符串匹配(并对制作的每个图表重复)。 有什么办法可以抑制这种情况吗? 当条件很长并且附加多个图时,它会导致显示问题。
例如:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt<<变异图(Y(:体重),X(:年龄),Where(:性别=="M"));

通过界面并没有显示这个问题,但脚本看起来很相似:

回复:用条件抑制图表中的文本框令人沮丧的是,这仍然是一个问题。
同样令人沮丧的是,这个问题的大多数文档/解决方案都没有涵盖广泛的情况,或者他们通过迭代树结构来暴力破解它。
JMP 具有 xpath 功能,但该功能也没有详细记录。 我想这是因为 xpath 是 JMP 不拥有所有权的标准语法,因此他们认为没有必要向可能不熟悉的用户提供任何文档。
这是我用来摆脱这些讨厌的文本框的一行代码,基本上在它们出现的任何情况下都是如此。 您确实需要对包含违规文本框的任何报告进行包装(如果还没有)。
借用 txnelson 对所述轮廓盒包装器的命名:
(ob << xpath("//TextBox[contains(text(),'Where(')]")) << delete;<BR />如果需要,可以使用类似的 xpath 脚本来获取框的实际文本,也许执行一些处理以使信息更清晰,然后将其插入到另一个大纲框或适合组的标题中 -这将是首先将报告保存到脚本的所需功能!
有关 JMP 中 xpath 的更多阅读,我强烈建议阅读本报告 [PDF]不久前由另一位 JMP 用户发布。 该 PDF 概述了与 jmp 相关的 xpath 语法,并提供了有用的示例。
回复:用条件抑制图表中的文本框删除文本框的另一种方法是简单地隐藏它。对于吉姆提到的情况,隐藏效果很好,但它可能并不适合所有情况。
观察[文本框( 1 )] <<隐藏( 1 ) ;
温蒂
回复:用条件抑制图表中的文本框只是想说,我也发现自己经常剥离这个“Where”文本框 - 出于您显示的原因,而且我认为这个小打印条款作为标签不太好,它很容易在视觉上丢失。
同意 Ian 的观点,即信息可能有用甚至必不可少,但当我使用 JSL 构建自定义报告时,无论如何,我通常会讨论冗余的大纲框标题并修改它们以更加突出地提供此信息,并且不会出现烦人的布局问题文本框。因此,如果您有那些大的粗体标签,上面写着“变异性测量仪”和“体重变异性图表”,我会修改它们以添加 SEX=M 或其他更明显的地方。
另外,我经常有很多图,根据数据的不同,数量也不同,等等,所以我有时使用这种粗略的方法来删除所有的Where文本框......
对于(i=1000,i>0,i--,
尝试(如果(包含(nw [文本框(i)] << gettext,“Where(:”),nw [文本框(i)] <<删除));
);
回复:用条件抑制图表中的文本框非常感谢马克 - 现在我明白了。
回复:用条件抑制图表中的文本框我想知道同样的事情。 谢谢
回复:用条件抑制图表中的文本框谢谢回复。 在 H 列表框中,额外的文本会导致问题。 文本会显示在侧面,导致大量额外的死角。 另外是通用文本,未评估。

回复:用条件抑制图表中的文本框谢谢! 这对我有用。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
总结(lev = by(:性别,:年龄));
k=关联数组(lev[1])<<获取键;
nk = 尼特姆斯(k);
New Window("Var by Sex and Age", main = V List Box());
对于(i=1,i<=nk,i++,
loc1 = loc(lev[1],k );
vcwin = H 列表框();
对于(j=1,j<=nrows(loc1),j++,
ob=OutlineBox("",dt<<变异图(Y(:体重),:X(:身高),Where(:性别==lev[1][loc1] & :年龄 == num(lev[2][loc1])),标准差图表(0)));
ob[文本框(1)]<<删除;
vcwin<<追加(ob);
);
主要<<追加(vcwin);
);
回复:用条件抑制图表中的文本框我会警告不要删除“按”组变量的级别,因为显而易见,如果没有它们,就不清楚每个图表与哪个“子集”相关。
但是,如果我理解正确的话,您希望使大纲节点中的标签更短。 如果您觉得必须这样做,您可以尝试以下方法:
名称默认到这里( 1 ) ;
dt =打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
// 带有“By”组的变异图
VC = dt <<变异图(是( :重量) , X ( :年龄) ,经过( :性别)) ;
// 报表层
VCRep = VC <<报告;
// 获取“By”组的级别
级别=关联数组(柱子( dt , “性别” ) <<获取值) <<获取密钥;
// 更新(缩短)报告上的大纲节点标题
为了( G = 1 , G <= N项( VCRep ) , G ++,
VCRep [ G ][大纲框( 1 )] <<设置标题(查尔(级别[ G ])) ;
) ;
要了解其工作原理,请查看“帮助 > 脚本指南”或“帮助 > 脚本索引”。
我只是好奇不去理会会导致什么“显示问题”
回复:用条件抑制图表中的文本框这是我用来摆脱Where子句的方法。
我怀疑可能有一种方法可以从可变性平台的报告输出中引用它,但由于它实际上是在平台输出之前显示的,所以我已经成功地在输出周围包裹了一个新窗口,并嵌入了“空”轮廓框,然后从那里引用它。
名称默认为此处( 1 ) ;
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
// 将显示形式化为一个空的新窗口
// 允许引用Where 文本框的轮廓框
// 在显示变异性图表之前
新窗户( “展示” ,
观察=轮廓盒( ”” , dt <<变异图(是( :重量) , X ( :年龄) ,在哪里( :性别== “M” ) ) )
) ;
// 删除其中包含Where 子句的文本框
观察[文本框( 1 )] <<删除;