¿Cómo cambio la escala del eje X después de usar Graph Builder en JSL (y la pregunta de enfoque gráfico)?Hola,
Estoy escribiendo un script que funcionará con archivos que tienen una variedad de columnas, por lo que tuve que modificar un ejemplo que encontré aquí que concatena la llamada al generador de gráficos en función del número de columnas.A pesar de ser torpe, parece funcionar, pero mi problema es que luego quiero cambiar el eje X para registrar la escala, cambiar los límites, etc.Probé algunos enfoques del Índice de secuencias de comandos y ejemplos, pero ninguno pareció funcionar.
Agradecería mucho un puntero en la dirección correcta en la configuración del eje, pero si alguien tiene una idea de cómo hacer mejor la parte inicial de gráficos, eso también sería genial, ¡gracias!
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);
GráficosScriptingRe: ¿Cómo cambio la escala del eje X después de usar Graph Builder en JSL (y la pregunta de enfoque gráfico)?Hola,
De hecho, esta es una forma bastante complicada de crear una expresión del generador de gráficos. Es posible que desee analizar el enfoque de definir toda su expresión de GB con "marcadores de posición" (gbe = Expr (Graph Builder (...)); use la función de sustitución para reemplazar sus marcadores de posición con columnas, variables, etiquetas, etc. , y luego use la función Eval () para generar el gráfico (lo siento, no tengo tiempo ahora para proporcionar más detalles)
Para su pregunta específica, si asigna su expresión del Generador de gráficos a una variable (por ejemplo, gb = Generador de gráficos (...);), puede usar el siguiente enfoque para actualizar el eje de la forma que necesite:
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" )
);Espero que esto ayude.
Mejor,
TS
Re: ¿Cómo cambio la escala del eje X después de usar Graph Builder en JSL (y la pregunta de enfoque gráfico)?Todos los mensajes que cambian un eje están disponibles en la entrada de índice de secuencias de comandos de AxisBox
Lo que quieres usar es
report(TestGraph)[AxisBox(2)] << scale(log);