在JSL中使用Graph Builder後如何更改X軸的比例(以及製圖方法問題)你好
我正在編寫一個腳本,該腳本將與具有多種列的文件一起使用,因此我不得不修改在此找到的示例,該示例根據列數將Graph Builder調用串聯起來。儘管笨拙,它似乎確實起作用了,但是我的問題是我然後想將X軸更改為對數刻度,更改限制等。我嘗試了“腳本索引”和示例中的幾種方法,但似乎都沒有用。
非常感謝在軸設置上朝著正確方向的指針,但是如果有人對如何更好地完成初始繪圖部分有想法,那也將非常棒,謝謝!
dt = Current Data Table();
ColNameList = dt << Get Column Names (continuous, string);
//Start with initial graph builder
GraphExpr = "
TestGraph = Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(";
//Add X Entry
GraphExpr = GraphExpr || "
X( :Name( \!"" || ColNameList[1] || "\!") ),";
//Add the first Y entry
GraphExpr = GraphExpr || "
Y( :Name( \!"" || ColNameList[2] || "\!") ),";
//Add the second Y entry
For( i = 3, i <= N items (ColNameList), i++,
GraphExpr = GraphExpr || "
Y( :Name( \!"" || ColNameList[i] || "\!"), Position (1) ),";
);
//Close out Variables section
GraphExpr = GraphExpr || "
),
Elements(
Line( X, Y( 1 )";
//Build out the lines for all columns
For( i = 2, i <= N items (ColNameList), i++,
GraphExpr = GraphExpr || ", Y( " || char(i) || " )"
);
GraphExpr = GraphExpr || ", Legend( 1 )
)
)
)";
eval(parse(GraphExpr));
TestGraph << Show Legend (0);
圖形腳本編寫回复:在JSL中使用Graph Builder後如何更改X軸的比例(以及製圖方法問題)你好
實際上,這是構建Graph Builder表達式的相當複雜的方法。 您可能想研究使用“佔位符”(gbe = Expr(Graph Builder(...))定義整個GB表達式的方法;使用替代函數用列,變量,標籤等替換佔位符。 ,然後使用Eval()函數生成圖形(很抱歉,我現在沒有時間提供更多詳細信息)
對於您的特定問題,如果將Graph Builder表達式分配給變量(例如,gb = Graph Builder(...);),則可以使用以下方法以所需的任何方式更新軸:
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :age, Size( 23 ) ),
Y( :height, Size( 37 ) ),
Y( :weight, Position( 1 ), Size( 37 ), Side( "Right" ) )
),
Elements( Points( X, Y( 1 ), Legend( 1 ), Jitter( 1 ) ), Points( X, Y( 2 ), Legend( 3 ), Jitter( 1 ) ) )
);
framebox = Report( gb )[framebox( 1 )];
framebox << Y Axis(
Scale ("Log"),
Add Ref Line( 61.25, "Solid", "Medium Dark Green" ),
Show Major Grid( 1 ),
Show Minor Grid( 1 ),
Format( "Fixed Dec", 5, 2 ),
Rotated Labels( "Perpendicular" )
);我希望這有幫助。
最好,
TS
回复:在JSL中使用Graph Builder後如何更改X軸的比例(以及製圖方法問題)AxisBox的腳本編制索引條目中提供了所有更改軸的消息。
您要使用的是
report(TestGraph)[AxisBox(2)] << scale(log);