使用 JSL 更改图形元素的绘制顺序<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我知道您可以通过右键单击图形,然后单击“自定义”,然后使用向上/向下箭头移动图形脚本的顺序来更改图形元素的绘制顺序。 有没有办法使用 JSL 来做到这一点? 您可以向 Framebox 发送一些消息来更改网格线和参考线的顺序,我希望标记会有类似的内容。 您还可以更改拟合线等内容的透明度吗?谢谢!
回复:使用 JSL 更改图形元素的绘制顺序使用 JMP 14.2,自定义图形选项可与如下所示的 jsl 命令配合使用,并使用“Window”和“Frame Box”变量的值,因此对于本示例来说是任意的:
Window(6)[Frame Box( 1 )] << Dispatch( {}, "Oneway Plot", FrameBox, {Grid Line Order( 3 )})
我可以通过这个技巧让网格线出现在双变量、变异图和等高线图平台的标记顶部,但我无法让它在值超过 3 的 Oneway 平台上工作。 默认情况下,标记位于第五个位置,因此我需要将网格线顺序放在第五个位置之后。 虽然上述命令使用网格线顺序(2)或网格线顺序(3)工作正常,但当我使用网格线顺序(4)或网格线顺序(5)时没有任何反应。 我相信这是一个错误。
如果我点击并强制网格线顺序为 5,然后将脚本保存到脚本窗口,我会得到“网格线顺序(5),参考线顺序(1)”,但按原样运行脚本脚本窗口甚至没有将网格线放在第五个位置。
我会回应评论@nkelleh :“不幸的是,“标记顺序”消息未与框架框的“参考线顺序”和“网格线”顺序消息一起包含在内。” JMP 允许使用“之后/之前”或“最后/第一个”等选项,就像在数据表中排列列或行一样,在这里也会很有帮助。
回复:使用 JSL 更改图形元素的绘制顺序事实上,这也有效。 不知道为什么我没有想到尝试一下。 干杯。
回复:使用 JSL 更改图形元素的绘制顺序您是否尝试过在删除标记后将其附加回框架?
- markerSeg1 = bivFrame << 查找 Seg( 标记 Seg( 1 ) );
- 标记段1 << 删除;
- bivFrame <
这应该使它在抽签顺序中排在最后。删除它只是将其从树中删除,因此添加回来应该是安全的。
回复:使用 JSL 更改图形元素的绘制顺序啊,好吧,为了以防万一,不得不问一下!
感谢您的解决方法,我能够通过删除现有标记并按照您链接的线程的建议重新绘制它们来获得我正在寻找的输出。 在选择数据点方面,您失去了平台交互性,但由于这纯粹是为了数据可视化目的,所以这对我来说很好。
再次感谢。
下面是我重复使用的代码段,用于删除标记并重新绘制它们
//Delete Markers if requiredmarkerSeg1 = bivFrame << Find Seg( Marker Seg(1) );markerSeg1 << Delete;//Script to redraw markers on topbivFrame << Add Graphics Script( For(r=1, r <= NRows(dtMain), r++, y = Column( dtMain, "Voltage" ); x = Column( dtMain, "Temp" ); ms = Combine States( Marker State( Marker Of( Row State( r ) ) ), Color State( Color Of( Row State( r ) ) ) ); Marker(ms, {x, y}); ); );回复:使用 JSL 更改图形元素的绘制顺序抱歉 - 现在我明白了。
希望有人能证明我的错误,不幸的是,我会说你“运气不好”。 无论是在以编程方式调整向上/向下箭头方面,还是在拟合线的透明度方面。
不一定推荐,但如果您想将标记放在前面,您可以考虑使用图形脚本使用以下变体重新绘制它们: https://community.jmp.com/thread/65641
回复:使用 JSL 更改图形元素的绘制顺序嗨伊恩,
再次感谢,有用的提示。 在这里,我想保留其他图形元素,在本例中是拟合样条线,但将标记放在绘图的前面(样条线拟合的线条遮盖了许多线条/标记靠近的区域中的标记。 我可以使用原始帖子中描述的方法手动执行此操作,只是想知道是否有任何方法可以以编程方式执行此操作。 不幸的是,“标记顺序”消息未与框架框的“参考线顺序”和“网格线”顺序消息一起包含在内。
可以轻松更改使用图形脚本绘制的对象的透明度。 另一方面,我想知道是否有任何方法可以改变双变量平台中拟合线的透明度。
再次感谢你的帮助。
回复:使用 JSL 更改图形元素的绘制顺序仅供参考,您可以做这种事情(因此,通过更改网格和参考线的顺序,您也许能够得到您想要的东西):
名称默认为此处( 1 ) ;
打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
BIV =双变量(是( :重量) , X ( :高度) ,健身线) ;
重组病毒= BIV <<报告;
框架盒=重组病毒[框架盒( 1 )] ;
等待( 1 ) ;
框架盒<<
添加图形脚本(
1 ,
描述( 《橙色多边形》 ) ,
透明度( 0.5 ) ;
填色( { 1.0 , 0.5 , 0.0 } ) ;
多边形( [ 60 , 72 , 57 ] , [ 75 , 120 , 120 ] ) ;
) ;
等待( 1 ) ;
框架盒<<
添加图形脚本(
2 ,
描述( 《蓝色多边形》 ) ,
透明度( 0.5 ) ;
填色( { 0.0 , 0.5 , 1.0 } ) ;
多边形( [ 60 , 72 , 57 ] , [ 150 , 120 , 120 ] ) ;
) ;
等待( 1 ) ;
框架盒<<删除图形脚本( 1 ) ;
// 删除第一个图形脚本后,第二个图形脚本现在位于位置 1(即使它最初分配给位置 2)。 。 。
等待( 1 ) ;
框架盒<<删除图形脚本( 1 ) ;
另外,请参阅: https://www.jmp.com/support/help/Adding_Scripts_to_Graphs.shtml