<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Sto cercando di tracciare tre grafici di controllo (IR, EWMA e CUSUM) ma per qualche strana ragione le finestre del grafico mostrano spazi vuoti. Quando provate a usare l'interfaccia JMP, sta tracciando perfettamente i grafici.
Un fatto interessante è che lo stesso grafico viene popolato quando si esegue la terza fase menzionata di seguito in caso di prima esecuzione per generare limiti ma non quando effettivamente richiesto con limiti anche i limiti attualmente applicati sono calcolati dalla stessa tabella.
Ecco come funziona il mio flusso di codice:
- > Ottieni file di input
-> Unisciti a loro per creare la tabella principale
-> Calcola i limiti e archivia in un'altra tabella per tutti i parametri di processo. (Per i limiti della prima esecuzione verranno calcolati dalla tabella principale creata nel passaggio precedente)
-> Nella funzione di traccia Loop sui parametri e ottieni i limiti per loro e la funzione di visualizzazione delle chiamate
-> Traccia i grafici usando i valori della tabella principale applicando i valori limite appropriati.
Ecco il codice per gli ultimi due passaggi:
display = Funzione ({ Processi , Etichetta , Di , Src_Type , lmt1 , lmt2 , lmt3 } ,
r1 = Nuova finestra ( "Rapporto di analisi delle tendenze" || Data lunga ( Oggi ()) ,
H List Box (
Pannello ( "Gamma individuale e mobile" , Tabella dei dati corrente ( dt ) ; // dt è la tabella principale del passaggio 2.
cc = Diagramma di controllo (
Etichetta di esempio ( Come nome ( Etichetta )) ,
Dimensione del gruppo ( 1 ) , KSigma ( 3 ) ,
Come colonna ( Processi ) , Misura individuale ( LCL ( lmt1 [ 6 ]) , AVG ( lmt1 [ 5 ]) , UCL ( lmt1 [ 7 ]))
) ,
Dove ( Come colonna ( Di ) == Src_Type )
) ;
) , // Esclusi altri tipi di grafici per tagliare lo spazio breve !!
) ;
) ;
) ;
tracciare = Funzione ({ lmts , pmt_path } ,
param_dt = Aperto ( pmt_path , "invisibile" ) ;
param_summ = param_dt << Sommario ( Invisibile ,
Gruppo ( : Raggruppa per ,: Processi ,: Etichetta di esempio ,: Di )) << Mostra finestra ( 0 ) ;
Per ( q = 12 , q <= nRow ( param_summ ) , q ++, Tabella dei dati corrente ( param_summ ) ;
col2 =: Processi [ q ] ; Col3 =: Etichetta di esempio [ q ] ; col4 =: Di [ q ] ;
Tabella dei dati corrente ( lmts ) ;
CLMS = lmts << Ottieni nomi di colonne ( Stringa ) ;
Rimuovere da ( CLMS , 1 , 3 ) ;
Per ( t = 1 , t <= N articoli ( CLMS ) , t ++, Tabella dei dati corrente ( lmts ) ;
indv_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "Individuale" )] ;
cusum_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "CUSUM" )] ;
ewma_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "EWMA" )] ;
// Tabella dati attuali (dt);
// dt1 = dt << ottiene le righe dove (come colonna (dt, col4) == clms);
// if (nrows (dt1)> 0, dt << seleziona dove (colonna (dt, col4)! = clms) << escludi << cancella seleziona;);
display ( col2 , Col3 , col4 , CLMS [ t ] , indv_lmts , cusum_lmts , ewma_lmts ) ;
// dt << cancella gli stati delle righe;
) ;
) ;
) ;
Qualsiasi aiuto su dove mi manca il trucco sarebbe molto utile. Cerco un sacco di cose, ma invano. #Comment per favore se ho creato qualche tipo di confusione.
Grazie!!
** Aggiornato: Valori limite usati:
LCL = 93.6194355860458; AVG = 101.61918084006; UCL = 109.618926094074;
LCL = 91.1389663749264; AVG = 101.933916247341; UCL = 112.728866119756;
LCL = 95.791125521153; AVG = 99.6808876541094; UCL = 103.570649787066;
LCL = 96.1221889831269; AVG = 99.2913942704352; UCL = 102.460599557744;
LCL =.; AVG = 101.63975868081; UCL =.;
LCL = 96.4170696517472; AVG = 99.4247943691138; UCL = 102.43251908648;
LCL = 85.6694623331952; AVG = 102.356837670718; UCL = 119.044213008241;
LCL = 85.2093412100746; AVG = 105.163584386677; UCL = 125.117827563278; // Per questo registro che mostra "Limiti di controllo fuori servizio: deve essere LCL <= Avg <= UCL"
Sembra che ci sia qualche problema quando si cerca di ottenere risultati di finestre individuali, ma quando ho provato ad aggiungere tutti i loop in una finestra finale, i risultati si mostrano. Se qualcuno può aiutare su questo o sto andando in un modo sbagliato.
Codice aggiornato:
V = VList Box ( "Tutti" ) ;
display = Funzione ({ Processi , Etichetta , Di , Src_Type , lmt1 , lmt2 , lmt3 } ,
r1 = Nuova finestra ( "Rapporto di analisi delle tendenze" || Data lunga ( Oggi ()) ,
H List Box (
Pannello ( "Gamma individuale e mobile" , Tabella dei dati corrente ( dt ) ; // dt è la tabella principale del passaggio 2.
cc = Diagramma di controllo (
Etichetta di esempio ( Come nome ( Etichetta )) ,
Dimensione del gruppo ( 1 ) , KSigma ( 3 ) ,
Come colonna ( Processi ) , Misura individuale ( LCL ( lmt1 [ 6 ]) , AVG ( lmt1 [ 5 ]) , UCL ( lmt1 [ 7 ]))
) ,
Dove ( Come colonna ( Di ) == Src_Type )
) ;
) , // Esclusi altri tipi di grafici per tagliare lo spazio breve !!
) ;
) ; V << Aggiungere ( r1 ) ; r1 << Chiudi la finestra ;
) ;
tracciare = Funzione ({ lmts , pmt_path } ,
param_dt = Aperto ( pmt_path , "invisibile" ) ;
param_summ = param_dt << Sommario ( Invisibile ,
Gruppo ( : Raggruppa per ,: Processi ,: Etichetta di esempio ,: Di )) << Mostra finestra ( 0 ) ;
Per ( q = 12 , q <= nRow ( param_summ ) , q ++, Tabella dei dati corrente ( param_summ ) ;
col2 =: Processi [ q ] ; Col3 =: Etichetta di esempio [ q ] ; col4 =: Di [ q ] ;
Tabella dei dati corrente ( lmts ) ;
CLMS = lmts << Ottieni nomi di colonne ( Stringa ) ;
Rimuovere da ( CLMS , 1 , 3 ) ;
Per ( t = 1 , t <= N articoli ( CLMS ) , t ++, Tabella dei dati corrente ( lmts ) ;
indv_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "Individuale" )] ;
cusum_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "CUSUM" )] ;
ewma_lmts = Come colonna ( CLMS [ t ]) [ lmts << Ottieni righe dove ( : Parametro == col2 & : Tipo di grafico == "EWMA" )] ;
// Tabella dati attuali (dt);
// dt1 = dt << ottiene le righe dove (come colonna (dt, col4) == clms);
// if (nrows (dt1)> 0, dt << seleziona dove (colonna (dt, col4)! = clms) << escludi << cancella seleziona;);
display ( col2 , Col3 , col4 , CLMS [ t ] , indv_lmts , cusum_lmts , ewma_lmts ) ;
// dt << cancella gli stati delle righe;
) ;
) ;
) ;
v = Nuova finestra ( "test" , V ) ;

Il nuovo problema che ho è piuttosto che creare diversi riquadri di riquadri ogni volta metti tutto sotto uno e sbarazzati di questa cosa "Dove (....)" dal display.