大家好,
我做一個平行繪圖,並使用一個變量為線條著色。 例如,我在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為您的答案!
我的目標確實是要更改圖形的線寬,而不僅僅是更改圖例。
我選擇解決方案@小姐因為它更短一點,但是兩者都像魅力一樣起作用!:)