Ereignislinien und Kommentare zu Kontrollkarten
Regelkarten mit bekannten Ereignissen kommentieren? Ich stoße ständig auf Situationen, in denen ich Ereignislinien zu einem Diagramm hinzufügen muss. Diese unterscheiden sich von Phasen, da ich den Mittelwert und die Kontrollgrenzen nicht neu berechnen muss, sondern lediglich eine Markierung benötige, um anzuzeigen, dass etwas passiert ist. Es gibt auch Fälle, in denen ich Punkte in einem Diagramm bequem automatisiert beschriften muss. In diesem Blog werden einige Skripte behandelt, die zu Kontrolldiagrammdiagrammen hinzugefügt werden können, um das Zeichnen von Ereignislinien und das Hinzufügen von Kommentaren zu Diagrammen zu erleichtern.

Der erste Schritt zum Anpassen eines Diagramms besteht darin, mit der rechten Maustaste in das Diagramm zu klicken und „Anpassen“ auszuwählen. Daraufhin wird das Dialogfeld „Diagramm anpassen“ angezeigt. Wenn Sie oben links auf das „+“-Symbol klicken, wird ein leeres Skript geöffnet, in das Sie die unten besprochenen Beispiele einfügen können.Für dieses erste Beispiel ist es erforderlich, dass Ihre Tabelle eine Zeichenspalte mit dem Namen „Kommentar“ enthält. Wenn diese Spalte einen Wert enthält, wird wie im obigen Beispiel eine vertikale Linie in Ihrem Diagramm gezeichnet.

Der zweite Schritt besteht darin, sich einige benutzerdefinierte Skripte anzusehen, die diesem Fenster hinzugefügt werden können. Jede Anweisung bzw. jedes Argument muss mit einem Semikolon verbunden werden. Ein guter Ort, um mehr über die Verwendung dieser benutzerdefinierten Skripts in Graph zu erfahren, ist das Dropdown-Menü „Beispiele und Vorlagen“ im Dialogfenster. Außerdem enthielt der Skriptindex auf der Registerkarte „Hilfe“ Einzelheiten zu den einzelnen Funktionen. Beachten Sie, dass dieses kleine Skriptfenster etwas eingeschränkt ist. Nachdem Sie Änderungen vorgenommen haben, sollten Sie daher in Betracht ziehen, das Berichtsskript im Skriptfenster zu speichern, um mit der Bearbeitung fortzufahren. Alle benutzerdefinierten Skripts, die dem Diagramm hinzugefügt werden, werden auch im Skript für Berichtsobjekte angezeigt. Dieser Dialog erleichtert das Hinzufügen zum Diagramm, ohne dass Sie viel über JSL und die Manipulation des Skripts des Berichtsobjekts wissen müssen.
Benutzerdefiniertes Diagrammskript 1: Hinzufügen einer Linie
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row() ) ) );
Erläuterung:
- Für jede Zeile(): Dadurch wird die Formel auf jeder Zeile und nicht auf Spaltenebene ausgewertet.
- Is Missing(): Diese Funktion gibt eine „0“ zurück, wenn die Zeile leer ist, und eine „1“, wenn dies nicht der Fall ist. Wenn die Zeile nicht fehlt (dh = „0“), wird die V-Linie ausgewertet und eine Linie gezeichnet.
- V Line(): Schauen Sie im Skriptindex nach, dort stehen viele interessante Optionen zur Verfügung. In diesem Fall gebe ich ihm nur eine Zahl, sodass bei dieser Zahl eine vertikale Linie über den gesamten Rahmen gezeichnet wird. (Es gibt keine Nummer, oder?)
- Row(): Diese Funktion gibt die Zeilennummer zurück. Ich verwende diese Zeilennummer als Stelle, an der die vertikale Linie durch den Rahmen gezogen wird.
Benutzerdefiniertes Diagrammskript 2: Beschriftungen zu den Linien hinzufügen
For Each Row( If( Is Missing( :Comment ) == 0, Text( Right Justified, {row(),
Col Maximum( :Data ) * 1.2},:Comment)));
Erläuterung:
- Für jede Zeile(): Dadurch wird die Formel auf jeder Zeile und nicht auf Spaltenebene ausgewertet.
- If(): Dies ist eine klassische „If, Then, Else“-Funktion. Wenn die Bedingung erfüllt ist, führen Sie das Erste aus, andernfalls das Zweite. Außer dass es hier kein „sonst“ gibt. Wenn die Bedingung also wahr ist, dann passiert das erste, was passiert, sonst passiert nichts.
- Is Missing(): Diese Funktion gibt eine „0“ zurück, wenn die Zeile leer ist, und eine „1“, wenn dies nicht der Fall ist. Wenn hier die Zeile fehlt, passiert nichts, aber wenn sie nicht fehlt, wird die Textfunktion ausgewertet.
- Text(): Überprüfen Sie erneut den Skriptindex auf alle Argumente, die hier enthalten sein können, sowie auf einige gute Beispiele. Hier platzieren wir den Text an den Koordinaten Y und X und der Text befindet sich in der Spalte „Kommentar“.
- Row() ist die x-Position und y-Position ist das Maximum (Col Maximum()) der :Data-Spalte mal 1,2. Dadurch wird der Text etwas oberhalb der Datenpunkte angezeigt.
Benutzerdefiniertes Diagrammskript 3: Beschriftungen zu den Datenpunkten hinzufügen.
Es ist wahrscheinlich besser und einfacher, nur die Spalten- und Zeileneigenschaften zum Beschriften der Datenpunkte zu verwenden, aber in manchen Fällen ist eine solche Skriptlösung akzeptabel komplex.
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 ))));
Erläuterung:
- Das wird etwas schick. In diesem Ausdruck gibt es eine verschachtelte If-Anweisung. Wenn „Note“ nicht fehlt und „:Data“ kleiner oder gleich dem Spaltenmittelwert von „:Data“ ist, legen Sie fest, dass der Text in „:Note“ unter dem Datenpunkt liegt, oder dass der Text in „:Note“ über dem Datenpunkt liegt.
- Auf diese Weise sieht es im Diagramm besser aus, aber in diesem Beispiel sieht es etwas komplizierter aus, als es sein muss.
- Eine einfachere Version würde so aussehen:
For Each Row(If( Is Missing( :Note ) == 0, Text( Right Justified,{Row()+1,:Data}, :Note );
„row()+1“ verschiebt den Text nach rechts vom Datenpunkt
Beispiel-Skript für ein Kontrolldiagramm
Die Tabelle für dieses Skript muss die folgenden Spalten enthalten. Eine Beispieltabelle ist beigefügt.
- ID, fortlaufende Zeilennummern
- Daten, eine Spalte mit Ihren Trenddaten
- Kommentare: Eine dünn gefüllte Spalte mit Kommentaren für vertikale Linien
- Notizen: Eine dünn gefüllte Spalte mit Notizen für bestimmte Datenpunkte
Dieses Skript generiert das Kontrolldiagramm in der Abbildung oben.
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. Ja, was würden Sie hinzufügen?
2. Ich bin sicher, dass es eine Möglichkeit gibt, dies indirekt zu tun. Ich denke, es gibt eine Möglichkeit, abzufragen, welche Spalten zur Erstellung eines Berichts verwendet wurden, und auf diese Weise den Spaltennamen zu erfassen. Hängen Sie dann das benutzerdefinierte Skript mit einem Verweis auf die Datenspalte an das Diagramm an.
2. Es wäre einfacher, wenn ich eine Liste von Variablen durchlaufen und dann den Verweis auf die aktuelle Spalte in das benutzerdefinierte Skript einfügen würde.
Hallo Byron, noch etwas (eigentlich 2!!): Ist es möglich, einen Slogan für „Custom Graph Script 3: Hinzufügen von Beschriftungen zu den Datenpunkten“ hinzuzufügen? Und gibt es eine Skriptmethode, bei der Sie nicht genau die Y-Achse benennen müssen (z. B. „:Data“), sondern standardmäßig den Spaltennamen verwenden?
Prost, Ian
Ian,
Ich bin mir nicht sicher, was die Ursache dafür ist (noch nicht genug Kaffee), aber das wird das Problem beheben.
Dies ist das Skript im Menü „Anpassen“.
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 )
)
);
Ich habe row()-1 durch die Spalte „:ID“ ersetzt, um die Zeilennummer für die Position zu verwenden, und sie dann um eins nach hinten verschoben.
Hallo Byron,
Ich habe versucht, das Skript in den SPC Chart Builder zu kopieren
Ich habe Ihnen einen Link für die Datei gesendet und habe die folgenden Kommentare
1_Kontrollkarte nach ID: Dies ist Ihre Kontrollkarte, nicht geändert – alles ist in Ordnung

2_Kontrolldiagramm nach ID & Kontrolldiagramm-Builder: Dies ist das Skript aus (#1), das in den Diagramm-Builder kopiert wurde – die vertikalen Linien sind um eine Stelle auf der x-Achse versetzt, siehe die ersten beiden Sonderursachen
Regelkarten-Generator

3_Kontrolldiagramm nach ID und Kontrolldiagramm-Builder AS Numerisch/Kontinuierlich: Wenn ich die ID von Numerisch/Ordinal in Numerisch/Kontinuierlich ändere, ist alles in Ordnung

4_Kontrolldiagramm nach ID & Kontrolldiagramm-Generator AS (numerisch/kontinuierlich alphanumerisch/numerisch): Aber ich möchte auf der X-Achse eine alphanumerische Chargennummer darstellen, es wird wieder verschoben

Es macht mich wahnsinnig. Können Sie mir helfen? Ich sende Ihnen den Speicherort der Datei
https://1drv.ms/u/s!Au2FkmkZvSi-sA8j_g625J1VFdtw?e=0UPtz6
Prost, Ian