Linee di eventi e commenti sulle carte di controllo
Annotare le carte di controllo con eventi noti? Mi imbatto continuamente in situazioni in cui devo aggiungere linee di eventi a un grafico. Queste sono distinte dalle fasi perché non ho bisogno di ricalcolare la media e i limiti di controllo, ho solo bisogno di un indicatore per mostrare che è successo qualcosa. Ci sono anche casi in cui devo etichettare i punti su un grafico in modo comodo e automatizzato. Questo blog tratta un paio di script che possono essere aggiunti ai grafici dei grafici di controllo che facilitano il disegno di linee di eventi e l'aggiunta di commenti ai grafici.

Il primo passo per personalizzare un grafico è fare clic con il pulsante destro del mouse all'interno del grafico e selezionare Personalizza; verrà visualizzata la finestra di dialogo Personalizza grafico. Facendo clic sull'icona "+" in alto a sinistra si aprirà uno script vuoto ed è qui che potrai incollare gli esempi discussi di seguito.Questo primo esempio richiede che tu abbia una colonna di caratteri chiamata "Commento" nella tua tabella. Quando c'è un valore in questa colonna, verrà disegnata una linea verticale sul grafico come nell'esempio sopra.

Il secondo passo è esaminare un paio di script personalizzati che possono essere aggiunti a questa finestra. Ogni serie di istruzioni o argomenti deve essere incollata insieme da un punto e virgola. Un buon posto per apprendere come utilizzare questi script personalizzati nel grafico è il menu a discesa Esempi e modelli nella finestra di dialogo. Inoltre, l'indice degli script, nella scheda Guida, conteneva dettagli su ciascuna funzione. Tieni presente che questa piccola finestra di script è piuttosto limitata, quindi dopo aver applicato le modifiche, valuta la possibilità di salvare lo script del report nella finestra di script per continuare a modificare. Tutti gli script personalizzati aggiunti al grafico verranno visualizzati anche nello script degli oggetti report. Questa finestra di dialogo semplifica l'aggiunta al grafico senza dover conoscere molto JSL e come manipolare lo script dell'oggetto report.
Script grafico personalizzato 1: aggiunta di una linea
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row() ) ) );
Spiegazione:
- For Each Row(): questo fa sì che la formula venga valutata su ogni riga anziché a livello di colonna.
- Is Missing(): questa funzione restituisce uno "0" se la riga è vuota e un "1" in caso contrario. Se la riga non manca (cioè = “0”) allora viene valutata la linea V e viene tracciata una linea.
- V Line(): controlla l'indice degli script per questo, ci sono molte opzioni interessanti da usare. In questo caso gli sto dando solo un numero, quindi disegnerà una linea verticale sull'intero fotogramma in corrispondenza di quel numero. (non c'è nessun numero vero?)
- Row(): questa funzione restituisce il numero di riga. Utilizzo questo numero di riga come punto in cui viene tracciata la linea verticale attraverso la cornice.
Script grafico personalizzato 2: aggiunta di etichette alle linee
For Each Row( If( Is Missing( :Comment ) == 0, Text( Right Justified, {row(),
Col Maximum( :Data ) * 1.2},:Comment)));
Spiegazione:
- For Each Row(): questo fa sì che la formula venga valutata su ogni riga anziché a livello di colonna.
- If(): questa è una classica funzione “If, Then, Else”. Se la condizione è vera allora fai la prima cosa, altrimenti fai la seconda. Solo che qui non c’è “altro”, quindi se la condizione è vera, allora succede la prima cosa altrimenti non succede nulla.
- Is Missing(): questa funzione restituisce uno “0” se la riga è vuota e un “1” se non lo è. Qui, se manca la riga, non succede nulla, ma se non manca, viene valutata la funzione di testo.
- Text(): Ancora una volta, controlla l'indice degli script per tutti gli argomenti che possono essere inclusi qui, oltre a un paio di buoni esempi. Qui inseriremo il testo alle coordinate Y e X e il testo si troverà nella colonna :Commento.
- Row() è la posizione x e la posizione y è il massimo (Col Maximum()) della colonna :Data moltiplicato per 1.2. Ciò fa sì che il testo venga visualizzato leggermente sopra i punti dati.
Script grafico personalizzato 3: aggiunta di etichette ai punti dati.
Probabilmente è meglio e più semplice utilizzare semplicemente le proprietà della colonna e della riga per etichettare i punti dati, ma in alcuni casi una soluzione basata su script come questa è accettabilmente complessa.
For Each Row(If( Is Missing( :Note ) == 0, If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note ))));
Spiegazione:
- Questo diventa un po' fantasioso. In questa espressione c'è un'istruzione If nidificata. Se Note non manca e :Data è inferiore o uguale alla media della colonna di :Data, allora fai in modo che il testo in :Note sia sotto il punto dati, oppure fai in modo che il testo in :Note sia sopra il punto dati.
- Sembra migliore nel grafico in questo modo, ma in questo esempio inizia a sembrare un po' più complicato di quanto dovrebbe essere.
- Una versione più semplice sarebbe simile a questa:
For Each Row(If( Is Missing( :Note ) == 0, Text( Right Justified,{Row()+1,:Data}, :Note );
La "riga()+1" sposta il testo a destra del punto dati
Esempio di script di grafico di controllo
La tabella per questo script deve avere le seguenti colonne. È allegata una tabella di esempio.
- ID, numeri di riga sequenziali
- Dati, una colonna con i dati di cui eseguire l'andamento
- Commenti: una colonna di commenti scarsamente popolata per le linee verticali
- Note: una colonna di note scarsamente popolata per punti dati specifici
Questo script genera il grafico di controllo nella figura sopra.
Control Chart(
Sample Label( :ID ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Data, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Data"},
"IR Chart of IM",
FrameBox,
{Frame Size( 800, 200 ), Add Graphics Script(
1,
Description( "Script" ),
For Each Row( If( Is Missing( :Comment ) == 0, V Line( Row() ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, {Row(), Col Maximum( :Data ) * 1.2},:Comment ))
);
For Each Row(
If( Is Missing( :Note ) == 0,
If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note )))
);
), Grid Line Order( 2 ), Reference Line Order( 3 )}
),
Dispatch( {"Individual Measurement of Data"}, "IR Chart of IM", FrameBox( 2 ),
{Frame Size( 72,200)})))
1. Sì, cosa aggiungeresti?
2. Sono sicuro che esiste un modo per farlo indirettamente. Penso che esista un modo per interrogare quali colonne sono state utilizzate per creare un report e acquisire il nome della colonna in questo modo. Quindi aggiungi lo script personalizzato al grafico con un riferimento alla colonna di dati.
2. Sarebbe più semplice se stessi scorrendo un elenco di variabili e quindi includessi il riferimento alla colonna corrente nello script personalizzato.
Ciao Byron, un'altra cosa (2 in realtà!!), è possibile aggiungere uno slogan per "Custom Graph Script 3: Aggiunta di etichette ai punti dati". ed esiste un metodo di scripting in cui non è necessario nominare esattamente l'asse y (ad esempio ":Data"), ma per impostazione predefinita è il nome della colonna
Saluti Ian
Perfetto, funziona, quindi felice applausi
Ian,
Non sono sicuro di cosa stia causando ciò (non c'è ancora abbastanza caffè), ma questo risolverà il problema.
Questo è lo script nel menu Personalizza.
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row()-1 ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, { row()-1, Col Maximum( :Data ) * 1.2}, :Comment )
)
);
Ho sostituito la colonna :ID con row()-1, per utilizzare il numero di riga per la posizione, quindi spostarlo indietro di uno.
Ciao Byron,
Ho provato a copiare lo script nel generatore di grafici SPC
Ti ho inviato un collegamento per il file e ho i seguenti commenti
1_Carta di controllo per ID: questa è la tua carta di controllo non modificata: va tutto bene

2_Control Chart tramite ID e Control chart builder: questo è lo script da (#1) copiato nel chart builder: le linee verticali sono sfasate di una posizione sull'asse x, vedere le prime due cause speciali
Costruttore di carte di controllo

3_Grafico di controllo tramite ID e generatore di grafici di controllo AS Numerico/Continuo: se cambio l'ID da Numerico/Ordinale a Numerico/Continuo, tutto va bene

4_Carta di controllo tramite ID e generatore di carte di controllo AS numerico/alfanumerico continuo): ma voglio tracciare sul numero di lotto alfa/numerico dell'asse x, si imposta nuovamente

Mi sta facendo impazzire, puoi aiutarmi, ti invio la posizione del file
https://1drv.ms/u/s!Au2FkmkZvSi-sA8j_g625J1VFdtw?e=0UPtz6
Saluti Ian