大家好,
我做了一个平行图,并使用一个变量来为线条着色。例如,我将以下脚本与 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 变量的第一级(本例中为年龄)相关的行。
如何同时修改所有行?创建图表时是否应该使用 Dispatch 函数?但是我真的不知道如何处理它,因为我事先不知道 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) ) )}))
);
感谢@ms和@Thierry_S 的回答!
我的目标确实是改变图形的线宽,而不仅仅是图例的线宽。
我选择@ms的解决方案,因为它稍微短一些,但两者都很有效!:)