<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich versuche, drei Regelkarten (IR, EWMA & CUSUM) zu zeichnen, aber aus irgendeinem Grund zeigen die Kartenfenster Leerzeichen. Bei Verwendung der JMP-Schnittstelle werden die Diagramme perfekt gezeichnet.
Eine interessante Tatsache ist, dass das gleiche Diagramm gefüllt wird, wenn der dritte Schritt ausgeführt wird, der beim ersten Durchlauf ausgeführt wird, um Grenzwerte zu generieren, nicht aber wenn er tatsächlich erforderlich ist, wobei die Grenzwerte selbst dann aus derselben Tabelle berechnet werden.
So funktioniert mein Codefluss:
- > Eingabedateien abrufen
-> Verbinden Sie sie, um die Haupttabelle zu erstellen
-> Limits berechnen und für alle Prozessparameter in einer anderen Tabelle speichern. (Für den ersten Durchlauf werden die Grenzwerte aus der im vorherigen Schritt erstellten Haupttabelle berechnet.)
-> In der Plot-Funktion Loop on Parameters und erhalten Sie deren Grenzen und rufen Sie die Anzeigefunktion auf
-> Plotten Sie die Diagramme mit den Werten der Haupttabelle und wenden Sie die entsprechenden Grenzwerte an.
Hier ist der Code für die letzten beiden Schritte:
Anzeige = Funktion ({ Verarbeiten . Etikette . Durch . Src_Type . lmt1 . lmt2 . lmt3 } .
r1 = Neues Fenster ( "Trendanalysebericht" || Langes Datum ( Heute ()) .
H Listenfeld (
Panel Box ( "Individual & Moving Range" . Aktuelle Datentabelle ( dt ) ; // dt ist Haupttabelle aus Schritt 2.
cc = Steuerkarte (
Musteretikett ( Als Name ( Etikette )) .
Gruppengröße ( 1 ) . KSigma ( 3 ) .
Als Spalte ( Verarbeiten ) . Einzelmessung ( LCL ( lmt1 [ 6 ]) . AVG ( lmt1 [ 5 ]) . UCL ( lmt1 [ 7 ]))
) .
Woher ( Als Spalte ( Durch ) == Src_Type )
) ;
) . // Andere Diagrammtypen ausgeschlossen, um Platz zu sparen !!
) ;
) ;
) ;
Handlung = Funktion ({ lmts . pmt_path } .
param_dt = Öffnen ( pmt_path . "unsichtbar" ) ;
param_summ = param_dt << Zusammenfassung ( Unsichtbar .
Gruppe ( : Gruppiere nach ,: Verarbeiten ,: Musteretikett ,: Durch )) << Schaufenster ( 0 ) ;
Zum ( q = 12 . q <= NRow ( param_summ ) . q ++ Aktuelle Datentabelle ( param_summ ) ;
col2 =: Verarbeiten [ q ] ; col3 =: Musteretikett [ q ] ; col4 =: Durch [ q ] ;
Aktuelle Datentabelle ( lmts ) ;
clms = lmts << Spaltennamen abrufen ( String ) ;
Entfernen von ( Clms . 1 . 3 ) ;
Zum ( t = 1 . t <= N Artikel ( clms ) . t ++ Aktuelle Datentabelle ( lmts ) ;
indv_lmts = Als Spalte ( Clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "Individuell" )] ;
cusum_lmts = Als Spalte ( Clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "CUSUM" )] ;
ewma_lmts = Als Spalte ( Clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "EWMA" )] ;
// Aktuelle Datentabelle (dt);
// dt1 = dt << Zeilen erhalten wo (als Spalte (dt, col4) == Clms);
// if (nrows (dt1)> 0, dt << auswählen wo (Spalte (dt, col4)!) = clms) << ausschließen << clear select;);
Anzeige ( col2 . col3 . col4 . Clms [ t ] . indv_lmts . cusum_lmts . ewma_lmts ) ;
// dt << Zeilen löschen;
) ;
) ;
) ;
Jede Hilfe, wo ich den Trick vermisse, wäre sehr hilfreich. Ich versuche ziemlich viel, aber vergeblich. #Kommentar bitte, wenn ich irgendeine Art von Verwirrung verursacht habe.
Vielen Dank!!
** Aktualisiert: Verwendete Grenzwerte:
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; // Für dieses Protokoll wird angezeigt: "Kontrollgrenzen außerhalb der Reihenfolge: Muss LCL <= Avg <= UCL"
Anscheinend gibt es ein Problem, wenn versucht wird, ein einzelnes Fensterergebnis zu erhalten, aber wenn ich versucht habe, alle Schleifen an ein letztes Fensterergebnis anzuhängen, werden sie angezeigt. Wenn jemand helfen kann oder ich einen falschen Weg gehe.
Aktualisierter Code:
V = VList Box ( "Alles" ) ;
Anzeige = Funktion ({ Verarbeiten . Etikette . Durch . Src_Type . lmt1 . lmt2 . lmt3 } .
r1 = Neues Fenster ( "Trendanalysebericht" || Langes Datum ( Heute ()) .
H Listenfeld (
Panel Box ( "Individual & Moving Range" . Aktuelle Datentabelle ( dt ) ; // dt ist Haupttabelle aus Schritt 2.
cc = Steuerkarte (
Musteretikett ( Als Name ( Etikette )) .
Gruppengröße ( 1 ) . KSigma ( 3 ) .
Als Spalte ( Verarbeiten ) . Einzelmessung ( LCL ( lmt1 [ 6 ]) . AVG ( lmt1 [ 5 ]) . UCL ( lmt1 [ 7 ]))
) .
Woher ( Als Spalte ( Durch ) == Src_Type )
) ;
) . // Andere Diagrammtypen ausgeschlossen, um Platz zu sparen !!
) ;
) ; V << Anhängen ( r1 ) ; r1 << Fenster schließen ;
) ;
Handlung = Funktion ({ lmts . pmt_path } .
param_dt = Öffnen ( pmt_path . "unsichtbar" ) ;
param_summ = param_dt << Zusammenfassung ( Unsichtbar .
Gruppe ( : Gruppiere nach ,: Verarbeiten ,: Musteretikett ,: Durch )) << Schaufenster ( 0 ) ;
Zum ( q = 12 . q <= NRow ( param_summ ) . q ++ Aktuelle Datentabelle ( param_summ ) ;
col2 =: Verarbeiten [ q ] ; col3 =: Musteretikett [ q ] ; col4 =: Durch [ q ] ;
Aktuelle Datentabelle ( lmts ) ;
clms = lmts << Spaltennamen abrufen ( String ) ;
Entfernen von ( clms . 1 . 3 ) ;
Zum ( t = 1 . t <= N Artikel ( clms ) . t ++ Aktuelle Datentabelle ( lmts ) ;
indv_lmts = Als Spalte ( clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "Individuell" )] ;
cusum_lmts = Als Spalte ( clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "CUSUM" )] ;
ewma_lmts = Als Spalte ( clms [ t ]) [ lmts << Holen Sie sich die Zeilen wo ( : Parameter == col2 & : Diagramm Typ == "EWMA" )] ;
// Aktuelle Datentabelle (dt);
// dt1 = dt << Zeilen erhalten wo (als Spalte (dt, col4) == Clms);
// if (nrows (dt1)> 0, dt << auswählen wo (Spalte (dt, col4)!) = clms) << ausschließen << clear select;);
Anzeige ( col2 . col3 . col4 . clms [ t ] . indv_lmts . cusum_lmts . ewma_lmts ) ;
// dt << Zeilen löschen;
) ;
) ;
) ;
v = Neues Fenster ( "Prüfung" . V ) ;

Das neue Problem, das ich habe, ist, anstatt jedes Mal unterschiedliche Panel-Boxen zu erstellen, alles unter eine zu setzen und dieses "Wo (....)" - Ding von der Anzeige loszuwerden.