Automatisieren Sie die Referenzlinie basierend auf SpaltendatenHallo, ich bin sehr neu bei JSL und habe Schwierigkeiten, mir eine Möglichkeit auszudenken, wie ich automatisch mehrere Referenzlinien in einem Diagramm basierend auf Werten in einer bestimmten Spalte erstellen kann. Derzeit stelle ich eine Variable (:Signal) auf der Y-Achse und drei Variablen (:Zone, :Target und :Condition) auf der X-Achse grafisch dar. Jede (:Target)-Variable hat ein spezifisches (:historical-Signal) und ich würde gerne eine Möglichkeit finden, das (:historical-Signal) eines (:Target) automatisch als Referenzlinie grafisch darzustellen. Der Code, den ich habe, wird durch manuelles Hinzufügen des historischen Signalwerts über h line() erstellt, aber idealerweise würde das Skript eine Referenzlinie für jedes (:target) basierend auf dem entsprechenden historischen Signal hinzufügen. Danke schön!
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 );
)}
)
)
);
Automatisierung und SkripterstellungBetreff: Referenzlinie basierend auf Spaltendaten automatisierenSie müssen lediglich herausfinden, wie Sie die Werte und die Reihenfolge erhalten, und dann die erforderliche JSL generieren.Hier ist ein einfaches Beispiel, das Ihnen einen Anhaltspunkt für die Erstellung Ihres endgültigen Skripts geben soll.
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 ) );
Betreff: Referenzlinie basierend auf Spaltendaten automatisierenHey txnelson, vielen Dank für deine Antwort, das ist fast genau das, was ich suche! Das Einzige, was ich mich sonst noch frage, ist, ob es möglich ist, dass der h line()-Code mit dem entsprechenden :Target übereinstimmt, anstatt die Koordinaten manuell in das Diagramm eingeben zu müssen. In Zukunft werde ich unterschiedlich viele Ziele hinzufügen, und diese werden nicht immer in der gleichen Reihenfolge sein.
Betreff: Referenzlinie basierend auf Spaltendaten automatisierenAngesichts Ihrer aktuellen Datenstruktur gibt es hier eine Möglichkeit, Ihre historischen Signale zu automatisieren
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 );
)}
)
)
);