Comment changer l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Salut,
J'écris un script qui fonctionnera avec des fichiers qui ont une variété de colonnes, j'ai donc dû modifier un exemple que j'ai trouvé ici qui concatène l'appel de Graph Builder en fonction du nombre de colonnes.Bien que maladroit, cela semble fonctionner, mais mon problème est que je veux ensuite changer l'axe X en échelle logarithmique, changer les limites, etc.J'ai essayé quelques approches de l'index de script et des exemples, mais aucune ne semblait fonctionner.
J'apprécierais beaucoup un pointeur dans la bonne direction sur les paramètres de l'axe, mais si quelqu'un a une idée de la façon de mieux faire la partie graphique initiale, ce serait bien aussi, merci!
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);
GraphiqueScriptingRe: Comment changer l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Salut,
C'est en effet une manière assez compliquée de créer une expression de Graph Builder. Vous voudrez peut-être examiner l'approche consistant à définir votre expression GB entière avec des "espaces réservés" (gbe = Expr (Graph Builder (...)); utilisez la fonction de substitution pour remplacer vos espaces réservés par des colonnes, des variables, des étiquettes, etc. , puis utilisez la fonction Eval () pour générer le graphique (désolé je n'ai pas le temps pour le moment de fournir plus de détails)
Pour votre question spécifique, si vous affectez votre expression Graph Builder à une variable (par exemple, gb = Graph Builder (...);), vous pouvez ensuite utiliser l'approche ci-dessous pour mettre à jour l'axe de la manière dont vous avez besoin:
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" )
);J'espère que ça aide.
Meilleur,
TS
Re: Comment changer l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Tous les messages qui modifient un axe sont disponibles dans l'entrée d'index de script pour AxisBox
Ce que vous voulez utiliser, c'est
report(TestGraph)[AxisBox(2)] << scale(log);