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 basées sur les 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 le (:signal historique) d'un (:Target) comme ligne de référence. Le code que j'ai est réalisé 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 );
)}
)
)
);
Automatisation et scriptsRe : Automatiser la ligne de référence en fonction des données de colonneTout ce qui doit être fait est de comprendre 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 ) );
Re : Automatiser la ligne de référence en fonction des données de colonneSalut txnelson, merci beaucoup pour ta réponse, c'est presque exactement ce que je recherche ! La seule autre chose que je me demande est s'il est possible de faire correspondre le code h line() avec son :Target correspondant au lieu d'avoir à saisir manuellement les coordonnées sur le graphique. À l’avenir, je vais ajouter différents nombres 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 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 );
)}
)
)
);