大家好,
我做一个平行绘图,并使用一个变量为线条着色。 例如,我在Big Class表中使用以下脚本:
obj = Graph Builder(
Size( 636, 660 ),
Variables( X( :height ), X( :weight, Position( 1 ) ), Color( :age ) ),
Elements( Parallel( X( 1 ), X( 2 ), Legend( 3 ) ) )
);
然后,我想修改线的宽度。 我试图运行此:
frame = Report( obj )[FrameBox(1 )];
seg = frame << Find Seg( "Polyline Seg" );
seg << Set Line Width(3);
但它仅修改了与我的Color变量的第一级(在此示例中为age)相关的行。
如何同时修改所有行? 创建图形时应该使用调度功能吗? 但是我真的不知道如何处理它,因为我事先不知道Color变量的级别数。
在此先感谢您的帮助!
不知道为什么您的代码无法按预期工作。 它适用于我(适用于Mac的JMP 15)。
另一种方法是使用Xpath。
(obj << xpath( "//PolylineSeg" )) << Set Line Width( 3 );
嗨安,
根据我进行的几次实验,我想首先确保您的问题出在图例本身而不是GB绘图线上。 如果是这种情况,我注意到在“自定义”菜单中手动更改线宽时,图例也无法正确更新。 因此,这似乎是一个错误。
但是,当您在图例中手动更改线宽时,曲线和图例都会更新。
相应的代码(用于从GB脚本中删除的一个图例项目)如下:
obj << SendToReport( Dispatch( {}, "400", ScaleBox, {Legend Model (3, Properties (2, {Line Width (3)}, Itemd ID ("14", 1) ) )}));
因此,为了遍历图例项目(即年龄),我想出了以下“丑陋”代码:
Names Default to Here (1);
dt = current data table ();
dts = dt << Summary(
Group( :age ),
Freq( "None" ),
Weight( "None" ),
invisible
);
dlist = Column (dts, "age") << get values;
Close (dts, NoSave);
show (dlist);
obj = dt << Graph Builder(
Size( 636, 660 ),
Variables( X( :height ), X( :weight, Position( 1 ) ), Color( :age ) ),
Elements( Parallel( X( 1 ), X( 2 ), Legend( 3 ) ) )
);
objr = obj << report;
//frame = objr [FrameBox(1 )]; NO LONGER NEEDED
//seg = frame << Find Seg( "Polyline Seg" ); NO LONGER NEEDED
//seg << Set Line Width(6); NO LONGER NEEDED
For (i = 0, i < N Items (dlist), i++,
obj << SendToReport( Dispatch( {}, "400", ScaleBox, {Legend Model (3, Properties (i, {Line Width (12)}, Itemd ID (dlist [i], 1) ) )}))
);
谢谢@小姐和@Thierry_S为您的答案!
我的目标确实是要更改图形的线宽,而不仅仅是更改图例。
我选择解决方案@小姐因为它更短一点,但是两者都像魅力一样起作用!:)