Hallo,
Ich versuche, eine Tabelle zu erstellen, die die Referenzlinien für jedes Modell enthält. Jede Referenzlinie ist die Ertragserwartung für jedes Modell. Ich beabsichtige, ein Skript zu haben, das die Referenzlinien aus der zentralen Tabelle importieren und die Referenzlinie in den Kontrollkarten oder den Variabilitätskarten zeichnen kann, wenn die Erträge jedes Modells im Trend liegen.
Hier sind meine Dummy-Daten für die Ertragstabelle
| Modell | WaferID | Ertrag |
| IC1 | A | 50 |
| IC1 | B | 60 |
| IC1 | C | 70 |
| IC2 | E | 30 |
| IC2 | F | 40 |
| IC2 | G | 50 |
| IC2 | H | 60 |
| IC3 | R | 80 |
| IC3 | S | 90 |
| IC3 | T | 70 |
| IC3 | Z | 65 |
Hier ist meine Dummy-Referenzlinientabelle, die in die Kontrollkarten importiert werden muss
| Modell | Referenzlinie für die Renditeerwartung |
| IC1 | 50 |
| IC2 | 45 |
| IC3 | 70 |
Das Kontrolldiagramm oder das Variabilitätsdiagramm, das ich zeichnen möchte, hat „Yield“ auf der Y-Achse und „WaferID“ auf der X-Achse. Daher kann ich die Funktion „Spalteneigenschaft“ in der Spalte „Ertrag“ nicht verwenden, um die Referenzlinien festzulegen. Ich muss mir mehr als 60 ICs ansehen und suche nach Hilfe, die automatisiert statt manuell eingegeben werden könnte. Hier ist ein Beispiel-Schnappschuss dessen, was ich erreichen möchte. Jede Hilfe wäre sehr dankbar.

Ich habe einen anderen Weg eingeschlagen. Ich habe die Spalte „Ertrag“ nach Modell aufgeteilt, um eine separate Spalte pro Modell zu erstellen. Geben Sie dann über „Spalteneigenschaften“ > „Spezifikationsgrenzen“ > „Ziel“ die erwarteten Werte ein (die im Wesentlichen Ziele sind, nicht wahr?). Siehe angehängte Datei.
Die Lokalisierung von JSL in den verschiedenen von JMP unterstützten Sprachen ist durchaus möglich, erfordert jedoch einen gewissen zusätzlichen Aufwand. Einzelheiten dazu finden Sie im Entdeckungspapier von @hecht_jmp . Wenn Sie beispielsweise mit Gliederungsknoten arbeiten (wie im obigen Code) und diese namentlich referenzieren, wird dies mit ziemlicher Sicherheit fehlschlagen. Andererseits kann die Referenzierung anhand der Nummer (wie im obigen Code) fehlschlagen, wenn sich die Struktur des Berichts ändert (z. B. wenn der Inhalt des Berichts zwischen den Versionen umfangreicher wird).
Wahrscheinlich ist es am besten, eine E-Mail an support@jmp.com zu senden und auf diesen Thread hinzuweisen.
Ich habe diese JSL auf meinem chinesischen JMP11 getestet. Erhalten Sie den folgenden Bericht im Protokoll. Ich kann immer noch keine Referenzlinie zeichnen. Kannst du es mir erklären?
GMan
Vielen Dank, Ian. Das funktioniert großartig.
Der folgende Code erzeugt:

und sollte Ihnen den Einstieg erleichtern. Sie können „Hilfe > Bücher > Skripthandbuch“ und „Hilfe > Skriptindex“ verwenden, um herauszufinden, was es tut. Beachten Sie, dass die Verwendung der Titel der Gliederungsknoten derzeit nicht sehr robust ist, dies jedoch verbessert oder anders gemacht werden könnte.
NamesDefaultToHere(1);
// Yield table
dt1 =
New Table( "Yield",
Add Rows( 11 ),
New Column( "Model",
Character,
"Nominal",
Set Values(
{"IC1", "IC1", "IC1", "IC2", "IC2", "IC2", "IC2", "IC3", "IC3", "IC3",
"IC3"}
)
),
New Column( "WaferID",
Character( 16 ),
"Nominal",
Set Values( {"A", "B", "C", "E", "F", "G", "H", "R", "S", "T", "Z"} )
),
New Column( "Yield",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [50, 60, 70, 30, 40, 50, 60, 80, 90, 70, 65] )
)
);
// Reference table
dt2 =
New Table( "Reference",
Add Rows( 3 ),
New Column( "Model", Character, "Nominal", Set Values( {"IC1", "IC2", "IC3"} ) ),
New Column( "Value",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [50, 40, 70] )
)
);
// Start here . . .
// Get the values in dt2 into lists for later
modelVal = Column(dt2, "Model") << getValues;
refVal = Column(dt2, "Value") << getValues;
// Control Charts
cc = dt1 << Control Chart(
Sample Label( :WaferID ),
Chart Col( :Yield, Individual Measurement ),
By( :Model )
);
// Loop over the control chart reports
for(r=1, r<=NItems(cc), r++,
ccRep = Report(cc[r]);
// Extract the level of 'Model' from the title of the outline node
title = ccRep[OutlineBox(1)] << getTitle;
delimPos = Munger(title, 1, "=");
level = Substr(title, delimPos+1, Length(title)-delimPos);
// Get the reference value and plot it using a graphics script
ref = refVal[Loc(modelVal, level)];
Eval(
Substitute(
Expr(ccRep[FrameBox(1)] << addGraphicsScript(PenColor("Blue"); HLine(TBD))),
Expr(TBD),
ref[1]
);
);
);