So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuHi,
Meine JMP-Version ist 10.0.2. Aufgrund des Arbeitsaufwands muss ich Hunderte von Parametern analysieren und jeder Parameter verfügt über mehr als 100 Datenpunkte. Mein Kunde hat mir eine weitere Datei mit LSL, Ziel und USL dieser Parameter in Excel geschickt. Daher frage ich mich, ob es ein Skript/ein eingebettetes Tool gibt, um die Spezifikationsgrenzen mit den entsprechenden Parametern zu verknüpfen, wenn ich das Variabilitätsdiagramm zeichne (die X-Achse soll die unterschiedliche Chargennummer und die Y-Achse die Parameterdaten darstellen). Ich möchte auch den Boxplot der Rohdaten anzeigen. Derzeit mache ich das alles manuell, was viel Zeit verschwendet. Lassen Sie mich bitte wissen, ob es eine Lösung gibt (ich gehe davon aus, dass es eine Lösung geben sollte).
Bitte entschuldigen Sie, dass ich die Rohdatendatei aus vertraulichen Gründen nicht zeigen kann. Vielen Dank im Voraus.
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDanke Nelson, dieses Skript kann in meinem Fall funktionieren. Vielen Dank für Ihre Geduld und Unterstützung!
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuIhre Spaltennamen enthalten Zeichen, die JMP auszuführen versucht, anstatt sie als Teil des Namens zu verwenden.Daher musste ich eine :Name()-Funktion hinzufügen, um JMP zu zwingen, den vollständigen Wert als Namen zu interpretieren.Siehe das Skript unten.
Hinweis: Die Anweisungen dt = und dtLimits = wurden geändert, um nach bereits geöffneten Datentabellen zu suchen.Möglicherweise müssen Sie sie wieder auf die Verwendung einer open()-Funktion umstellen.
// Open table to have limits set on
dt = data table("raw data");
dtLimits = data table("Spec limit");
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows(colNamesPosition) > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:Name(\!"" || colNames[colNamesPosition[1]] || "\!")" ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :Name("TWNB_10/10$Vtlin%V"), :Name("TWNB_10/10$Idlin%uA/um") ), X( :wafer ) );Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuIch habe die vereinfachte Rohdatentabelle und die Spezifikationsgrenzwerttabelle beigefügt. Ich denke, der Fehler liegt an der Benennungsregel meiner Parameter, die $ enthält. Aber ich kann den Parameternamen nicht ändern. Bitte helfen Sie bei der Überprüfung. Wirklich schätzen.
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDas von mir bereitgestellte Skript geht davon aus, dass die Spalten der Limits-Datentabelle benannt sind
Sind dies die Namen der Spalten in Ihrer Limits-Datentabelle?
Wäre es möglich, dass Sie eine Kopie Ihrer Grenzwertdatentabelle und Ihrer Messdatentabelle beifügen?Dies würde das Debuggen der Probleme erleichtern.
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDanke Nelson. Ich habe das Skript geändert und dieses Mal tauchte ein weiterer Fehler auf, der besagte: „Für den Zugriff auf die Datentabelle mit Gültigkeitsbereich ist eine Datentabellenspalte oder -variable erforderlich.“ Das verwirrt mich wieder. Können Sie mir bitte den Grund mitteilen?
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuIch habe gerade einen Fehler in meinem Code entdeckt.Bitte ändern Sie die Zeile im Code
If( N Rows( ) > 0,
Zu
If( N Rows( colNamesPosition ) > 0,
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDie Parameter in raw data.jmp sind nur Teile aller Parameter in der spec limits.jmp. Das könnte also der Grund sein?
Ich bin wirklich neu bei JSL. Wenn möglich, lassen Sie mich bitte wissen, ob andere Funktionen in meinem Fall ähnliche Aufgaben ausführen können. Vielen Dank für deine Hilfe.
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDas Problem besteht darin, dass die Loc()-Funktion keine Übereinstimmung in der colNames{}-Liste findet. Die Funktion erfordert eine genaue Übereinstimmung. Groß-/Kleinschreibung, Abstände usw. können Probleme verursachen.Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuHallo Neslon,
Ich glaube, ich kenne das Problem oder zumindest den Unterschied zwischen meinem Denken und Ihrem Drehbuch. Verzeihen Sie mir, dass ich es vorher nicht klar beschrieben habe.
Zu Beginn habe ich eine neue Datentabelle erstellt, in die ich Rohdaten eingefügt habe. Ich gehe davon aus, dass dies die aktuelle Datentabelle ist. Also definiere ich es als dt=aktuelle Datentabelle(). Dann öffne ich die gespeicherte Datei Spec limits.jmp
dtLimits<SPAN class="token operator">=</SPAN><SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"$Desktop\JMP\Spec limits.jmp"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Ich denke, dass das aufgrund des von mir geposteten Skripts nicht funktionieren kann?
Was ich jetzt mache, ist, die neue Datentabelle als Rohdaten.jmp zu speichern. Dann verwenden Sie das folgende Skript. Den Parametern wurden jedoch noch keine Spezifikationsgrenzen hinzugefügt.
// Open table to have limits set on
dt = Open( "C:\Users\Desktop\JMP/raw data.jmp" );
// Open spec limit table
dtLimits = Open( "C:\Users\Desktop\JMP/Spec limits.jmp" );
// Get a list of all of the numeric columns in the measurement data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);Also habe ich versucht, dieses Skript zu debuggen; Es stellt sich heraus, dass L22 einen Fehler anzeigt: Ungültiger Index (muss eine Zahl oder eine Liste von Zahlen sein). Ich bin nicht sicher, warum das in Ihrem Skript funktioniert, aber nicht in meinem. Wenn Sie Ideen haben, lassen Sie es mich bitte wissen. Danke schön.
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuDie Aussage:
dt=current data table();
setzt die Variable „dt“ so, dass sie auf eine bereits geöffnete Datentabelle zeigt.Wenn daher weder Ihre Messdatentabelle noch Ihre Grenzwerttabelle geöffnet sind, müssen Sie die verwenden
dt=open("<PATH>/data table name");</PATH>
um Ihre Messdatentabelle zu öffnen, nicht die Funktion „aktuelle Datentabelle()“.
Sie müssen sicherstellen, dass Sie die JSL verstehen, die ich in meiner ersten Antwort bereitgestellt habe, anstatt sie einfach auszuschneiden und in Ihren Code einzufügen.Alle in meinem Beispiel verwendeten Funktionen sind zusammen mit Beispielen im Scripting Index dokumentiert.
Hilfe==>Skriptindex
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuHallo Nelson,
Vielen Dank für Ihre Antwort. In Ihrem Beispiel haben Sie zwei Datentabellen erstellt, eine ist „Big Class.jmp“ und eine andere ist die Tabelle „Spezifikationsgrenzen“. In meinem Fall waren diese beiden Datentabellen jedoch bereits vorhanden. Also denke ich, dass mir jetzt nur noch die Verknüpfung der beiden Tabellen bleibt und ich das tun muss, was Sie im Skript angegeben haben, beginnend mit colNames = dt << Spaltennamen abrufen (numerisch, Zeichenfolge). Ich habe es unten versucht:
dt=current data table();
show (dt);
dtLimits=Open( "$Desktop\JMP\Spec limits.jmp" );
und dann befestigt
colNames = dt << get column names (numeric, string ).
und danach.Leider wurde nur Spec limits.jmp geöffnet, aber Spec Limits wurden nicht zur aktuellen Datentabelle hinzugefügt. Können Sie mir bitte beim Dubug helfen? Wirklich schätzen.
Betreff: So fügen Sie Spezifikationsgrenzen im Variabilitätsdiagramm aus der Datentabelle hinzuHier ist ein Beispielskript, das die Werte aus einer Grenzwertdatentabelle einliest und sie auf die Messdatentabelle anwendet.Und wenn das Variabilitätsdiagramm oder die meisten anderen Plattformdiagramme die Spezifikationsgrenzen anzeigen.
// Open table to have limits set on
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Create a limits table for the example
dtLimits = New Table( "Limits",
Add Rows( 2 ),
New Column( "Parameter", Character, "Nominal", Set Values( {"height", "weight"} ) ),
New Column( "LSL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [52, 60] ) ),
New Column( "Target", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [63, 105] ) ),
New Column( "USL", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [70, 180] ) )
);
// Get a list of all of the numeric columns in the measurment data table
colNames = dt << get column names( numeric, string );
// Loop across the Limits table and apply the findings to data table
For( i = 1, i <= N Rows( dtLimits ), i++,
// If a column in the measurement data table has the same name as the current
// Limits data table column "Parameter" has, then process the data
colNamesPosition = Loc( colNames, dtLimits:Parameter[i] );
If( N Rows() > 0,
Eval(
Substitute(
Expr(
__col__ << set property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
)
),
Expr( __col__ ), Parse( "dt:" || colNames[colNamesPosition[1]] ),
Expr( __LSL__ ), dtLimits:LSL[i],
Expr( __USL__ ), dtLimits:USL[i],
Expr( __Target__ ), dtLimits:Target[i]
)
)
);
);
// Run Variability Charts
Variability Chart( Y( :height, :weight ), X( :sex ) );