Automatiser la ligne de référence en fonction des données de colonneBonjour, je suis très nouveau sur JSL et j'ai du mal à trouver un moyen de créer automatiquement plusieurs lignes de référence dans un graphique en fonction des valeurs d'une colonne spécifique. Actuellement, je représente graphiquement une variable (:Signal) sur l'axe Y et trois variables (:Zone, :Target et :Condition) sur l'axe X. Chaque variable (:Target) a un (:signal historique) spécifique et j'aimerais trouver un moyen de représenter automatiquement un (:Target) (:signal historique) comme ligne de référence. Le code que j'ai est fait en ajoutant manuellement la valeur du signal historique via h line(), mais idéalement, le script ajouterait une ligne de référence pour chaque (:target) en fonction de son signal historique correspondant. Merci!
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ),
Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, 234 );
//Target 3
H Line( 2, 4, 670 );
//Target 1
H Line( 4, 6, 463 );
)}
)
)
);
ScriptRe : Automatiser la ligne de référence en fonction des données de la colonneCompte tenu de votre structure de données actuelle, voici une façon d'automatiser vos signaux historiques
Names Default To Here( 1 );
dt = Current Data Table();
targ1 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 1" )] );
targ2 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 2" )] );
targ3 = Mean( :Historical Signal[dt << get rows where( :Target == "Target 3" )] );
Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 ),
SendToReport(
Dispatch(
{"Variability Chart for Signal"},
"Variability Chart",
FrameBox,
{Frame Size( 969, 240 ), Add Graphics Script(
2,
Description( "" ),
Pen Color( "RED" );
//Target 2
H Line( 0, 2, targ2 );
//Target 3
H Line( 2, 4, targ3 );
//Target 1
H Line( 4, 6, targ1 );
)}
)
)
);Re : Automatiser la ligne de référence en fonction des données de la colonneSalut txnelson, merci beaucoup pour ta réponse, c'est presque exactement ce que je recherche ! La seule autre chose que je me demande, c'est s'il est possible de faire correspondre le code h line() avec son :Target correspondant au lieu d'avoir à entrer manuellement les coordonnées sur le graphique. À l'avenir, je vais ajouter des quantités différentes de cibles et elles ne seront pas toujours dans le même ordre.
Re : Automatiser la ligne de référence en fonction des données de la colonneTout ce qu'il reste à faire est de trouver comment obtenir les valeurs et l'ordre, puis de générer le JSL requis.Voici un exemple simple qui devrait vous donner un bon départ pour créer votre script final.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of targets and get the means
Summarize( dt, targs = by( :Zone, :Target ), targMeans = Mean( :Historical Signal ) );
vc = Variability Chart(
Y( :Signal ),
X( :Zone, :Target, :Condition ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Mean Diamonds( 1 )
);
// Create the JSL to submit to generate the Target Lines
theExpr =
"Report( vc )[FrameBox( 1 )] << add graphics Script(
Description( \!"\!" ),
Pen Color( \!"RED\!" );";
For( ii = 1, ii <= N Items( targMeans ), ii++,
theExpr = theExpr || "H Line( " || Char( (ii - 1) * 2 ) || "," || Char( (ii - 1) * 2 + 2 )
|| "," || Char( targMeans[ii] ) || ");";
);
Eval( Parse( theExpr ) );