Ho guardato un video in onda e ho provato a creare un grafico di controllo che includa le linee verticali e i commenti (annotazioni). Ho le battute ma i commenti sono tutti incasinati. Ho provato un numero di cose ma senza successo. Potete per favore vedere il file allegato, il codice e farmi sapere qual è il problema?
@gzmorgan0
Funziona come un campione!
Grazie!
@Sebnem ,
Esistono diversi metodi per creare lo script (espressione) che ha i valori incorporati per la linea verticale e il testo, non riferimenti a righe e colonne,
Le funzioni JSL per le espressioni [Substitute(), NameExpr(), EvalExpr(), Expr() ] e le funzioni di caratteri JSL che convertono il testo in espressioni JSL [Concat(), ConcatTo(), Eval Insert() e Parse] sono utili per Imparare.
cc= Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement )
);
rcc = report(cc);
scrp = Expr(Add Graphics Script(3,
Description( "PM Labels" )));
//get y placement = axis max - 0.5* axis inc
ypos = (rcc[AxisBox(1)]<< Get Max) - 0.5* (rcc[AxisBox(1)] << Get Inc);
txtcmd = "";
For Each Row(
If( Is Missing( :comment ) == 0,
txtcmd ||= EvalInsert("\[
V Line( ^Row() -1^ );
Text(
//Right Justified,
{ ^Row() - .75^, ^ypos^},
"^:comment(Row())^");]\")
)//end if
); //end for each row
show (txtcmd ); //see log
InsertInto(scrp, Parse(txtcmd));
show (scrp ); //see log
txtxp = Substitute(Expr(rcc[FrameBox(1)] << cmd), Expr(cmd), NameExpr(scrp));
Show(NameExpr(txtxp));
Eval(txtxp);
Nota, invece di usare For Each Row() , a idx= dt << get rows where ( !Is Missing( :comment ) ) potrebbe essere usato per trovare l'elenco più piccolo di righe con commenti.

@Sebnem ,
Ho usato il tuo copione. Ci sono 2 problemi principali.JMP Control Chart utilizza la sequenza per l'asse X e TestDate viene utilizzato per definire le etichette.Quindi la posizione x della tua etichetta dovrebbe essere Row() - 1, come la linea verticale. Ho commentato Right Justified e ho utilizzato meno 0,75 affinché l'etichetta fosse appena a destra della linea verticale.Rimuovi il commento Giustificato a destra e rendilo Row() - 1 affinché le etichette appaiano a sinistra della linea verticale.
Il secondo errore è la posizione y. Il tuo fattore di moltiplicazione di 1.2*Col Maximum(:Avg) è > 1500.Ho aggiunto un valore fittizio, potresti considerare Col Max(:Avg) +0.10 * Col Std Dev(:Avg).
Quindi i tuoi problemi erano x e y pos. Questo è un metodo semplice per aggiungere commenti utilizzando le informazioni della colonna. Tuttavia, questo è solo il registro in quanto la tabella è aperta.
Supponiamo che tu inserisca nel journal il grafico risultante, chiudi la tabella dei dati e il report del grafico di controllo e apporti eventuali aggiornamenti come la modifica della larghezza della linea dei limiti di controllo. scompaiono sia le righe che i commenti.Oppure, se salvi il diario e lo invii a un altro o lo apri in una nuova sessione, ancora una volta le etichette e le righe sono sparite.
Per mantenere quelle righe e testo, devono essere utilizzati i valori, non i riferimenti alla tabella dei dati.Aggiungerò un secondo script che utilizza valori e riferimenti.Ma questo dovrebbe mostrare cosa è andato storto con il tuo script.
Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Avg"},
"IR Chart of IM",
FrameBox,
{Add Graphics Script( 2, Description( "Script" ), Empty() ),
Add Graphics Script(
3,
Description( "Script" ),
For Each Row(
If( Is Missing( :comment ) == 0,
V Line( Row() - 1 )
)
);
For Each Row(
If( Is Missing( :comment ) == 0,
Text(
//Right Justified,
{Row()-0.75, Col Maximum( :Avg )+ 1.005},
:Comment
)
)
);
), Grid Line Order( 5 ), Reference Line Order( 6 )}
)
)
);