Comment puis-je 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.En dépit d'être 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 n'a semblé fonctionner.
J'apprécierais beaucoup un pointeur dans la bonne direction sur les paramètres d'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);
GraphiqueScriptRe : Comment changer l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Existe-t-il une description de la manière dont cela peut être fait pour les paramètres Gradient Legend ?
J'ai essayé
Report( gb)[Legend Box(1)] << Legend Model( ...
mais ça n'a pas marché
Re : Comment changer l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Hey Jim, merci pour la réponse rapide à ce sujet.Cela fonctionne bien.Je ne savais pas que vous deviez utiliser report() pour référencer cet élément de graphique, j'essayais juste d'utiliser TestGraph[AxisBox(2)] << scale(log)
Merci,
Todd
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);
Re : 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 construire une expression de Graph Builder. Vous voudrez peut-être examiner l'approche consistant à définir l'intégralité de votre expression GB 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 modifier l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Salut tout le monde,
J'ai une question un peu similaire, sur la façon d'automatiser l'axe X, qui est l'échelle de temps et j'aimerais qu'il affiche automatiquement les données de la dernière période souhaitée. (n=7) par exemple.
Très apprécié pour votre aide.
Sacré
Mon script comme ci-dessous :

Re : Comment modifier l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Salut @jmpfumbler , pouvez-vous poster le code en utilisant le un bouton plutôt qu'une image ?
Merci!
Re : Comment modifier l'échelle de l'axe X après avoir utilisé Graph Builder dans JSL (et question d'approche graphique)Hi Pmroz,<BR />Script with JSL, <BR />Thank you,<BR />
// → Data Table( "GSB" )
Local( {obj},
obj = Data Table( "GSB" ) <<
Graph Builder(
Size( 604, 659 ),
Variables(
X(
Transform Column(
"Month Year[Date Measured]",
Ordinal,
Format( "m/y", 23 ),
Formula(
Date DMY(
1,
Month( :Date Measured ),
Year( :Date Measured )
)
)
)
),
Overlay( GSB Validation )
),
Elements(
Bar(
X,
Legend( 11 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
Local Data Filter(
Add Filter(
columns(
:"Inferred Value (Yes/No)"n,
Transform Column(
"Month Year[Date Measured]",
Ordinal,
Format( "m/y", 23 ),
Formula(
Date DMY(
1,
Month( :Date Measured ),
Year( :Date Measured )
)
)
)
),
Where( :"Inferred Value (Yes/No)"n == "Yes" ),
Where(
Transform Column(
"Month Year[Date Measured]",
Ordinal,
Format( "m/y", 23 ),
Formula(
Date DMY(
1,
Month( :Date Measured ),
Year( :Date Measured )
)
)
) == {3755376000, 3758054400, 3760473600, 3763152000, 3765744000,
3768422400, 3771014400, 3773692800, 3776371200, 3778963200,
3781641600}
),
Display(
Transform Column(
"Month Year[Date Measured]",
Ordinal,
Format( "m/y", 23 ),
Formula(
Date DMY(
1,
Month( :Date Measured ),
Year( :Date Measured )
)
)
),
N Items( 15 )
)
)
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Monthly GSB Validation (%)" )}
),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "%" )} ),
Dispatch( {}, "Where((Inferred Value (Yes", TextBox, {Hide( 1 )} )
)
);
obj << Save Script to Data Table(
"Monthly GSB Validation (%)", <<REPLACE> = 12, y + 1, w / m >= 52, y - 1, y ) ) || Si( w >= 10, "W", "W0" ) || Char( w ) ) ) ) ), Taille ( 570, 619 ), Variables ( X ( :"Année Semaine[Date de mesure]" n ), Superposition ( : Meilleur produit ) ), Éléments ( Bar ( X, Légende ( 2 ) , Style de barre( "Stacked" ), Statistique récapitulative( "% du facteur" ), Étiquette( "Étiquette par valeur" ) ) ), Filtre de données locales (Ajouter un filtre( colonnes( :"Année Semaine[Date mesurée]"n ) , Où( :"Année Semaine[Date de mesure]"n == {"2023W48", "2023W49", "2023W50", "2023W51", "2023W52", "2024W01", "2024W02", "2024W03", "2024W04 ", "2024W05", "2024W06", "2024W07", "2024W08"} ), Display( :"Année Semaine[Date mesurée]"n, N éléments( 15 ), Rechercher( Définir le texte( "" ) ) ) ) ), SendToReport( Dispatch( {}, "Où(Année Semaine[Date mesurée] = 2023W48, 2023W49, 2023W50, 2023W51, 2023W52, 2024W01, 2024W02, 2024W03, 2024W04, 2024W05, 2024 W06, 2024W07, 2024W08)", Zone de texte, { Cacher( 1 )} ) ) );</REPLACE>