Automatizza la linea di riferimento in base ai dati della colonnaCiao, sono molto nuovo di JSL e sto lottando per pensare a un modo per creare automaticamente più linee di riferimento in un grafico in base ai valori in una colonna specifica. Attualmente sto rappresentando graficamente una variabile (:Signal) sull'asse Y e tre variabili (:Zone, :Target e :Condition) sull'asse X. Ogni variabile (:Target) ha uno specifico (:segnale storico) e vorrei trovare un modo per rappresentare automaticamente il grafico di un (:Target) (:segnale storico) come linea di riferimento. Il codice che ho è fatto aggiungendo manualmente il valore del segnale storico tramite h line(), ma idealmente lo script aggiungerebbe una linea di riferimento per ogni (:target) in base al suo segnale storico corrispondente. Grazie!
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 );
)}
)
)
);
ScriptingRe: Automatizzare la linea di riferimento in base ai dati della colonnaData la tua attuale struttura dei dati, ecco un modo per automatizzare i tuoi Segnali Storici
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: Automatizzare la linea di riferimento in base ai dati della colonnaEhi txnelson, grazie mille per la tua risposta, questo è quasi esattamente quello che sto cercando! L'unica altra cosa che mi chiedo è se sia possibile far corrispondere il codice h line() con il corrispondente :Target invece di dover inserire manualmente le coordinate sul grafico. In futuro, aggiungerò quantità diverse di obiettivi e non saranno sempre nello stesso ordine.
Re: Automatizzare la linea di riferimento in base ai dati della colonnaTutto ciò che deve essere fatto è capire come ottenere i valori e l'ordine, quindi generare il JSL richiesto.Ecco un semplice esempio che dovrebbe darti un inizio nella giusta direzione per creare il tuo script finale.
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 ) );