JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuft
Grüße,
Hintergrund: Ich habe einen sehr großen Datensatz, der ein Ergebnis spezifischer HF-Tests für Halbleitergeräte ist. Bei diesem HF-Test sind verschiedene Bedingungen wichtig. Ich habe 3 Ausgänge, die auf 16 verschiedenen Kanälen in 6 verschiedenen Testzuständen getestet werden, sodass ich 105 verschiedene Diagramme erstellen muss.
Beispiel: Verstärkung vs. Frequenz auf Kanal 1 im Testzustand 1; Verstärkung vs. Frequenz auf Kanal 2 im Testzustand 1, wo ich 15 Kanäle und 6 Testzustände habe.
Ich habe diese Diskussionsforen nach einer Lösung durchsucht und bei den Schränken, auf die ich gekommen bin, handelt es sich um einen 2017 gestarteten Thread mit dem Titel „ Wie exportiere ich ein JMP-Diagramm per JSL in PPT?
Ich habe versucht, das in dieser Lösung verwendete Skript zu integrieren, um mir zu helfen, und ich kann es dazu bringen, die erforderliche Anzahl von Plots zu erstellen, kann aber bestimmte Kanäle nicht herausfiltern.
Ich glaube, es fällt mir schwer, dies zu kommunizieren. Wenn Sie also eine Klarstellung benötigen, fragen Sie bitte nach.
Danke
Summarize( dt, lstChannel = By( :channel ) );
gb = Graph Builder(
invisible,
Size( 1225, 952 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Freq _(GHz)" ) ),
Y( :Gain ),
Group X( :wafer_num ),
Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) )
);
For( i = 1, i <= N Items( GroupBy ), i++,
gb << Local Data Filter(
columns(
:wafer_num,
:channel,
:RowCol),
Where( :channel == LstChannel[i] ) ),
// I would like to loop through the teststates as well
Where( :teststate == 1 ),
Mode( Show( 1 ), Include( 1 ) ) );
If( i == 1,
gb << Save Presentation( "$TEMP/jmp_example2.pptx" ),
gb << Save Presentation( "$TEMP/jmp_example2.pptx", Append )
);
gb << remove data filter;
);
Open( "$TEMP/jmp_example2.pptx" );Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftIch schätze, die anderen beiden haben sich nicht verbunden
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftVielen Dank für die Informationen, sie sind immer aufschlussreich. Ich halte es für einen großen Zufall, dass du mir am meisten geholfen hast. Sehen Sie, ich bin Wirtschaftsingenieur in einer Gießerei, die einen sehr hohen Mix an Produkten mit geringem Volumen hat, und wir führen eine erhebliche Menge an HF-Tests durch. Alles, was Sie erwähnt haben:
- Es gibt einen bekannten Bereich wie Kontroll- oder Spezifikationsgrenzen.
- muss auf etwas wie +/- k Sigma skaliert werden,
- Sie müssen die Gitterlinien steuern, zum Beispiel eine Gitterlinie bei jeweils 0,5 Sigma.
- Daten, deren Nominalwert groß ist, aber deren Variation sehr gering ist, zum Beispiel bedeutet der Wert 1750222, Standardabweichung ist 0,000023, dann zeichne ich eine transformierte Y-Mittelwert-Transformation, finde einen guten Maßstab und verwende den Algorithmus gdinc.jsl
- Führen Sie eine Analyse durch und stellen Sie fest, ob die Daten stark verzerrt oder klumpig (geclustert) sind.
Was ich erreichen möchte, testen wir und unser Kunde verwendet einige allgemeine Spezifikationsgrenzen, die auf keinen Daten basieren. Daher versuchen wir, Spezifikationsgrenzen auf der Grundlage von +/- 3 Sigma und +/- 4,5 Sigma mit begleitender oberer und unterer Kontrolle zu bestimmen Grenzen.Ein weiteres Beispiel ist, als ich nach einer Verbreiterung der X-Achse für die Verteilungsdiagramme fragte, weil unsere aktuellen Spezifikationsgrenzen LSL = 20 und USL = 40 sind. Aus diesem Grund bin ich ein begeisterter JMP-Befürworter, da die Dienstprogramme „Qualität“ und „Prozess“ großartige Tools bieten.
Ich weiß, wenn überhaupt, sehr wenig über die Darstellung multivariater Datenanalysen, aber ich werde es versuchen.
Tatsächlich bringt mir dieses Gespräch klar, warum ich wieder hier bin. Ich hätte gerne Ihre Meinung bezüglich der Verwendung derselben Plotmethode, die Sie mir für den Diagrammersteller und die Verteilung für die Fix Y by X-Analyse gegeben haben. Ich denke, dass dies ein sehr gutes Analysetool ist, da wir den Unterschied (statistisch) zwischen Datensätzen sehen können, in unserem Fall Wafer_Nummer. Natürlich verwende ich einen Each Pair Student's T-Test, um die Mittelwerte zu vergleichen ... Ich habe versucht, Plug-and-Plug-and-Play zu verwenden, bin aber mit der Dispacth-Funktion verwirrt.Im Anhang finden Sie die Datentabelle und ein Fenster „Im Skript speichern“ von dem, was ich versuche, zusammen mit einem Bild der Ausgabe. Auch hier ist Ihre Hilfe äußerst hilfreich.
Nebenbei: Ich habe meinen Manager gefragt, ob ich an einem ausführlichen Kurs zum Schreiben von Drehbüchern teilnehmen könnte, und er hat ja gesagt. Wenn Sie also Empfehlungen haben, lassen Sie es mich bitte wissen. Ich bin in der Gegend von Balitmore, MD.
yng
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftYng,
Sie haben nicht angegeben, wonach Sie suchen. Normalerweise verwende ich die JMP-Standardskalierung und verwende etwas wie das Folgende, wenn ich für alle Untergruppen die gleiche Achsenskalierung haben möchte. Dieses Skript nennt die Variablen von Interesse ylist, kann aber auf jede numerische kontinuierliche Variable (Spalte) angewendet werden, sogar auf Datetime.Der Trick besteht darin, JMP für alle skalieren zu lassen und dann die Achseneinstellung in die Tabellenspalte zu kopieren. Anschließend stellt jedes Diagramm, das diese Spalte verwendet, diese Skalierung bereit.
Names Default to Here(1);
ylist = {"Sepal length", "Sepal width", "Petal length", "Petal width"};
dt = Open("$sample_data/iris.jmp");
//get common axis
for(i=1, i<=nitems(ylist), i++,
ovl = dt << Overlay Plot(Invisible,
Y( Column(dt,ylist[i]) ), //yaxis
Overlay( 0 )
);
report(ovl)[AxisBox(1)] << Save to Column Property;
ovl << close window;
);
//now the same axis will be applied to all sub groups
ovl1 = dt << OverlayPlot( Y( :Petal length ), Overlay(0), By(:Species) );
//all 3 subgroups have the same Y - axis
//ovl = dt << OverlayPlot( Y( eval(ylist) ), Overlay(0), By(:Species) );
Ich mache eine benutzerdefinierte Skalierung für Achsen nur, wenn:
- Es gibt einen bekannten Bereich wie Kontroll- oder Spezifikationsgrenzen.
- muss auf etwas wie +/- k Sigma skaliert werden,
- Sie müssen die Gitterlinien steuern, zum Beispiel eine Gitterlinie bei jeweils 0,5 Sigma.
- Daten, deren Nominalwert groß ist, aber deren Variation sehr gering ist, zum Beispiel bedeutet der Wert 1750222, Standardabweichung ist 0,000023, dann zeichne ich eine transformierte Y-Mittelwert-Transformation, finde einen guten Maßstab und verwende den Algorithmus gdinc.jsl
- Führen Sie eine Analyse durch und stellen Sie fest, ob die Daten stark verzerrt oder klumpig (geclustert) sind.
Bezüglich der Ausreißererkennung habe ich keine Methode gefunden, die für alle Daten gilt. Für univariate Daten mit stark rechtsschiefen Daten (z. B. Null-inflationiertes Poisson) verwende ich gerne eine modifizierte Lenth-Methode:
- uscreen = Median + k * (oberes p-Perzentil – Median) / Abs( Normalquantil(p) )
- lscreen = Median – k * (Median – unteres (p) Perzentil/ Abs(Normalquantil (p))
- wobei p 0,1 sein könnte (für 10 und 90 Perzentile) oder p 0,25 sein könnte, dann wäre dies ein modifiziertes Pseudo-Sigma, und normalerweise liegt k in [4,6] für zusammengefasste Daten vor. Manchmal verwende ich für Rohdaten ein viel größeres k.
- Normalerweise suche ich auch nach allen Daten einer Variablen, aber wenn die Gruppen sehr unterschiedlich sind, suche ich nach Gruppen, wenn für jede Gruppe genügend Daten vorhanden sind.
Nachfolgend finden Sie ein Beispiel für die Berechnung der Screening-Werte nach Gruppen. Wenn die Vargroup 10 Gruppen hat, sind uscreen und lscreen Vektoren der Größe 10 und vg ist eine Liste mit 10 Vargroup-Namen.
//Find global outliers by vargroup for raw measurement data
//Use an assymetric 6 pseudo-sigma, computed from the 10 & 90th percentiles.
summarize( vg=by(vargroup),
c=count,
q10=quantile(varvalue,.10),
q50=quantile(varvalue,.50),
q90=quantile(varvalue,.90)
);
uscr = q50 + 6*(q90-q50)/Normal quantile(0.9);
lscr = q50 - 6*(q50-q10)/Normal quantile(0.9);Bitte beachten Sie:
- Es gibt nicht die eine richtige Methode und Sie sollten die Methoden immer mit denen überprüfen, die die Daten überprüfen. Und Ausreißer sollten niemals ignoriert werden, denn sie führen zu möglicherweise wichtigen Informationen.
- Ich verwende oft zwei Screening-Ebenen, insbesondere wenn ich Kontrollgrenzen berechnen, nach den aufgezeichneten Punkten suchen und nach Grenzwerten suchen muss ... Kontrollgrenzen sollten keine 5- und 6-Sigma-Daten berücksichtigen.
- Wenn Sie wöchentliche Analysen erstellen, beachten Sie, dass Sie jede Woche unterschiedliche Screening-Werte erhalten können. Vielleicht möchten Sie einmal eine Mega-Analyse durchführen und jede Woche die gleichen Grenzwerte verwenden.
- Für multivariate Daten sollten Sie einen Mutivariat-Bildschirm verwenden. Siehe Grafik. Basierend auf univariaten Grenzwerten haben zwei offensichtliche Ausreißer die Kontrolle. Wenn also Daten stark korreliert sind, sollte ein korrelierter Bildschirm verwendet werden. JMP Multivariate hat einen schönen multivariaten Bildschirm.

Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftGuten Morgen gzmorgan0 ,
Zuvor haben Sie erwähnt: „Es gibt mehrere Methoden, um automatisch zu skalieren und Ausreißer automatisch zu finden und zu beseitigen.“
Ich frage mich, ob es Ihnen nichts ausmachen würde, das mit mir zu teilen?Ich habe viel programmiert und bin mit ein paar kleineren Änderungen schon fast am Ende angelangt.
Yng
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftErstens: Mein Name ist David. Freut mich, Sie kennenzulernen..
Das ist richtig, ich möchte eine einheitliche Skala und würde die -x-Achse basierend auf dem Worst-Case-Szenario anpassen.Ich würde gerne Ihre Empfehlung hören, Ausreißer zu entfernen. Das zerstört meinen Datensatz. Die Teile, die wir elektrisch testen, bestehen entweder BESTANDEN, KAUM BESTANDEN oder versagen katastrophal. Diese katastrophal ausgefallenen Teile müssen entfernt werden.
Ich werde Ihr überarbeitetes Skript zum Testen in mein Hauptskript einfügen. Auch hier bin ich sehr dankbar. Ich möchte Ihnen auch für Include() danken. Ich hatte einen großen Teil meines Skripts, das nur aus SQL-Daten-Pull-Strings bestand. Unsere Datenbank verfügt über 8 verschiedene Tabellen, aus denen ich je nach Art des Tests Daten abrufen muss.
Danke nochmal...
Hier ist ein Beispiel zur Information: Ich habe 9 davon, die eine Menge Codezeilen in Anspruch nahmen und durch ein Include() gelöst wurden.
testdata_HAY_DC_QQ_Data = Expr(
"
SELECT
t1.testdate,
t1.wafer_id,
t1.wafer_number,
t1.lot_number,
t2.rownum,
t2.colnum,
t2.die_id,
t2.part_name,
t2.testname,
t2.channel,
t7.header_id,
t7.idx,
t7.run_id,
t7.set_id,
t7.Supply_Name,
t7.Voltage,
t7.Current
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN tst_dc_data t7
ON ( t7.header_id = t2.header_id )
WHERE (t1.wafer_number LIKE '"||SelectedLot||"')
AND (t2.testname LIKE '"||SelectedTest||"')
"
);
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuft
Yngeinstn,
Ich hatte den Eindruck, dass Sie für alle Verteilungen den gleichen Maßstab wollten.JMP Distribution leistet in der Regel hervorragende Arbeit bei der Skalierung der Histogramme an die vorliegenden Daten. Wenn Sie jedoch Teilmengen der Daten grafisch darstellen, ist der Maßstab der einzelnen Histogramme unterschiedlich. Wenn Sie den Bereich der Daten kennen, weisen Sie die Werte für Lo, Hi und Inc zu. Wenn Sie möchten, dass das Skript Daten verarbeitet, deren Bereich sich bei einer Prozessänderung ändern könnte, oder?? dann sollte die Berechnung von Lo und Hi und Inc eine Aufgabe des Skripts sein.
Für das vorherige Skript habe ich nur das Minimum und das Maximum verwendet nicht ausgeschlossen Daten.
Lo = Floor( Col Minimum ( :test_2 * If( Excluded(), Empty(), 1 ) ) );
Hi = Ceiling( Col Maximum( :test_2 * If( Excluded(), Empty(), 1 ) ) );
Unten habe ich eine weitere Änderung vorgenommen, um an den Enden etwas Platz zu schaffen: Berechnen Sie die Standardabweichung der nicht ausgeschlossenen Daten und fügen Sie eine halbe Standardabweichung hinzu.Einer der Gründe, warum ich die alternativen Diagramme zum Vergleich der Verteilungen vorgeschlagen habe, besteht darin, dass JMP auf alle enthaltenen Daten skaliert und Sie die Auswirkungen von Kanal und Teststatus sehen können.
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Es gibt mehrere Methoden zur automatischen Skalierung sowie zur automatischen Suche und Eliminierung von Ausreißern. Ich möchte diese Vorgehensweise nur ungern empfehlen, da die von einer Branche akzeptierten Methoden für eine andere möglicherweise nicht akzeptabel sind. und normale Datenmethoden gelten normalerweise nicht für klumpige Daten (Clusterdaten oder räumliche Daten) oder Null-aufgeblasene Fehlerdaten oder Zuverlässigkeitsdaten.Meine Absicht ist es, Alternativen aufzuzeigen, die für Sie funktionieren könnten oder auch nicht.
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuft
Ja, deine Fähigkeiten sind hervorragend und ich würde jederzeit einen JSL-Kurs bei dir belegen.
Aber kurze Frage.. Ich habe es mit gd_inc.jsl ausgeführt und das ist, was ich bekomme. Ich kann sehen, dass der Maßstab fast perfekt ist, aber meine 15 Datensätze weisen diese beiden Unterschiede auf. Das heißt nicht, dass dies in Zukunft nicht mehr passieren wird. Wenn Sie sagen, ändern Sie Ihr Skript mit dem zweiten, das Sie zitiert haben, bin ich verwirrt. Ich versuche herauszufinden, woher 10.5 und 42.0 stammen, und denke, dass es etwas mit der log()-Funktion zu tun hat, bin mir aber nicht sicher.

Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftgd_inc() ist eine Benutzerfunktion, die zuvor auf diesem Blogpfad gesendet wurde.Ich habe es noch einmal angehängt.Fügen Sie entweder den Code zu Ihrem Skript hinzu, bevor Sie ihn verwenden, oder speichern Sie das Skript (ich nenne meins gd_inc.jsl) in einem gemeinsamen Verzeichnis nützlicher Funktionen, Ihrer eigenen persönlichen Bibliothek und für jedes Skript, wenn Sie gute Achseninkremente berechnen möchten. Füge die Aussage hinzu.
Include( "mydirectory/gd_inc.jsl" );
Für Leute, die Berichte für ihr Unternehmen unterstützen, erstellen sie oft ein großes Skript mit dem Namen usr_functions.jsl.Dann verwenden sie statt zahlreicher Include()-Anweisungen nur ein Include("mydirectory/usr_functions.jsl")
Hier ist die Funktion noch einmal. Schauen Sie sich den vorherigen Beitrag an, dort finden Sie Beispiele für die Verwendung dieser Funktion.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/Übrigens verwende und unterrichte ich JMP und JSL seit vielen Jahren. Mein Wissen ist also nicht so erstaunlich, ich versuche nur, es zu teilen.
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftDu bist großartig mit diesem JSL-Zeug. Ich weiß nicht einmal, ob ich irgendetwas davon finden konnte. Ich teste gerade die Distribution. Ich kann Ihnen auch nicht genug für die anderen Grafiken danken. Ich werde sicher auch gefragt werden, wie das geht. Zu Ihrer Information: Ich verwende JMP 12.1.0, aber unser Unternehmen stellt auf JMP 14 um, worauf ich aufgrund des Semiconductor Toolkit Add-Ins, das ich auf dieser Website gefunden habe, kaum warten kann.
Ich erhalte eine Fehlermeldung, wenn es um die gd_inc-Anweisung geht.
Name nicht aufgelöst: gd_inc beim Zugriff oder bei der Auswertung von 'gd_inc', gd_inc(Lo, Hi, 10) /*###*/
Im folgenden Skript ist der Fehler mit /*###*/ markiert.
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftYngeinstn,
Ich habe 2 Skripte angehängt:
- ModifiedDistribution[test_2].jsl und
- OtherDistributionPlots.jsl
Der Nachteil ist, dass nicht jeder Plattformbericht die gleiche Struktur oder die gleichen Meldungen hat und was verfügbar ist, hängt von Ihrer JMP-Version ab.„Baumstruktur anzeigen“ und „XML abrufen“ sind Meldungen, die Ihnen dabei helfen können, die Berichtsstruktur zu ermitteln. Der Skriptindex listet die Meldungen für die Anzeigefelder auf.Ich verwende gerne XPath(), um schwer zu findende Objekte oder mehrere Segmente wie BoxPlotSeg und HistSeg in den Griff zu bekommen.Es gibt jedoch auch andere Methoden zum Referenzieren eines Objekts. Um ein Handle für die Skalierungsbox der Y-Variablen für ein Histogramm zu erhalten, verwenden Sie
_xx = gb<< Xpath("//ScaleBox[@charID='1']");
_xx << Nachricht;
oder
Report( gb )[ScaleBox(1)] << message;
Das andere Skript zeigt alternative Darstellungen, die sich gut zum Vergleich von Verteilungen eignen.
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftVielen Dank für das Skript... Ich habe eine Frage zu der ersten Frage, die Sie gestellt haben. Fügen Sie das einfach in das Hauptskript ein oder in ein separates neues?
Mir gefiel die Grafik, die Sie gezeichnet und meinem Chef zur Verfügung gestellt haben, daher warte ich darauf, von ihm zu hören, wie er sie in den vielen Berichten, die er anfordert, umsetzen wird.
Ich habe auch das Skript, das Sie mir gegeben haben, um zu zeigen, wie man -x durch -y zeichnet, genommen und Graph Builder durch Distribution ersetzt, und es hat fast perfekt funktioniert. Ich habe eine Frage zur Baumstruktur. Ich konnte zu dieser Zeile zurückkehren und das Textfeld (1) finden. Aufgrund der Verteilungsänderung erhalte ich jedoch eine Fehlermeldung, wenn ich dieses Skript ausführe. Ich kann die Teile, die entfernt werden müssen, nicht finden. Ich füge die Datentabelle und das geänderte Skript bei, das die Verteilungsfunktion enthält.
( GB << Top-Bericht )[ Textfeld ( 1 )] << löschen ; //lösche die where-Anweisung
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftVielen Dank für den Rat / Code. Ich werde es diese Woche versuchen. Ich habe eine weiche Frist, um den Datenabruf, das Tabellenformat und die Diagrammausgabe zu demonstrieren. Ihre Hilfe hat meine Erfolgsaussichten erheblich erhöht
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftWie ich in meiner vorherigen Antwort erwähnt habe: „ Sie können eine feste Skala erstellen oder einen bevorzugten Algorithmus verwenden, um die beste Skala für die vorliegenden Daten zu finden. " Unten ist die Funktion gd_inc() aufgeführt, die für das Skript 7_InteractiveDisplays_Alternates.jsl (für das Buch JSL Companion, 2. Auflage) erstellt wurde.
Es handelt sich um eine Vereinfachung von Funktionen, die ich beim Codieren einer Anwendung verwende, bei der der Wertebereich unbekannt ist.Dieses Skript geht davon aus, dass das feste Dezimalformat funktioniert. Ein allgemeineres Skript würde feststellen, ob es zu viele Dezimalstellen gibt, und dann zur wissenschaftlichen Notation wechseln oder zu einer logarithmischen Skala usw. wechseln. Bevor Sie es verwenden, sollten Sie es ausprobieren.
Die Argumente sind „Niedrig“, „Hoch“ und „Anzahl der Inkremente“. Es gibt einen Vektor mit einem Ink-Wert, einer Anzahl Dezimalstellen für das Format und der maximalen Länge zurück. Im vollständigen Skript wird es für eine x-Achse verwendet und die Ausrichtung wird basierend auf seiner Länge geändert. Oder die Länge könnte zum Auslösen verwendet werden, wenn etwas anderes als das feste Dezimalformat verwendet werden soll.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/Sobald Sie die Ergebnisse haben, ändern Sie Ihr Skript
_yscl = gd_inc(Lo,Hi, 10);
_xx[1] << Axis Setings( {Min( Lo ), Max( Hi ), Inc( _yscl[1] ),
Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} ),
Format("Fixed Dec",12,_yscl[2])
});
JMP leistet gute Arbeit bei der automatischen Skalierung. Der Grund dafür, dass die Skalierung für Ihren Graphbuilder zu breit ist, liegt darin, dass er skaliert, um die Punkte und nicht nur die geglätteten Kurven anzeigen zu können. Eine Möglichkeit besteht darin, die Spline-Kurvenwerte abzurufen und diese einfach darzustellen.
Wenn Sie möchten nicht Dazu müssen Sie das Maximum und das Minimum der Kurven ermitteln und entscheiden, ob alle Diagramme für Y_i denselben Maßstab haben sollen, oder ob jedes Y_i und jeder Test denselben Maßstab oder jedes Diagramm einen eigenen Maßstab haben müssen.Die JMP Spline Smooth()-Funktion gibt die Spline-Werte zurück, und Sie können die Maximal- und Minimalwerte für jede mögliche Kurve ermitteln und dann die Maximal- und Minimalwerte insgesamt ermitteln. Dadurch werden Lo und Hi bereitgestellt, und ich verwende normalerweise 10 für die Anzahl der Inkremente.
Verwenden Sie dann die Funktion gd_inc() und ändern Sie sie.Wenn Sie die unteren und oberen Werte kennen, erstellen Sie für jedes Y eine Tabelle oder Statistiken.
Die benutzerdefinierte Skalierung kann bei mehreren Kurven und benutzerdefinierten Kurven wie Splines unübersichtlich werden.Wenn ich Zeit habe, füge ich ein aktualisiertes Skript für Ihre Dummy-Daten bei.
Übrigens bin ich mir nicht sicher, wie realistisch Ihre Dummy-Daten sein könnten. Der Vergleich mehrerer Diagramme in PowerPoint kann verwirrend sein.GraphBuilder eignet sich gut zum Vergleichen von Diagrammen. Anstelle zahlreicher Grafiken könnte möglicherweise ein Vergleich (nicht unbedingt der untenstehende) hilfreich sein. Unten sehen Sie Y_3 im Vergleich zu Kanälen für den Test und verschiedene Werte von X.

Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftDie Tabelle wurde nicht geladen.
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftIch habe gerade deine Lösung ausprobiert. Normalerweise speichere ich das Skript im Fenster, damit ich sehen kann, wie das Diagramm aussehen soll.
Ich habe modifizierte Dummy-Daten angehängt, um Ihnen eine Vorstellung davon zu geben, was genau ich erreichen möchte.
Bei den 15 Kanälen und in diesem Fall 2 Testzuständen mit unterschiedlichen Ausgängen kann ich mir keine einheitliche Lösung vorstellen.
Teilen Sie mir bitte Ihre Meinung mit.
Dieser spezielle Test hat 3 Ausgänge. was ich gesondert bewerten muss.
David
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftSehr geschätzt.. Ich werde es heute Abend versuchen..
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftSie können eine feste Skala erstellen oder einen bevorzugten Algorithmus verwenden, um die beste Skala für die vorliegenden Daten zu finden.
Eine modifizierte Version des zuvor bereitgestellten Skripts ist unten beigefügt. Der neue Code ist unten aufgeführt.Beachten Sie, dass für die Dummy-Daten die beste Skalierung wahrscheinlich -8 bis 8 ist. Ich habe jedoch -7 gewählt, um zu demonstrieren, dass mehrere Diagramme abgeschnitten werden könnten.
_xx = gb<< Xpath("//ScaleBox[@charID='Y']");
_xx[1] << Axis Setings({Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )});Es gibt mehrere Methoden, um herauszufinden, wie eine Änderung per Skript ausgeführt wird. Am einfachsten ist es, ein Skript für ein Diagramm zu erstellen und es dann über die GUI auszuführen
Ändern Sie die Achsen, Titel oder Legenden. Wählen Sie dann aus dem roten umgekehrten Dreieck (auf dem Umriss des Diagrammerstellers) aus Skript speichern > Zum Skriptfenster . Bei Verwendung dieser Methode wird ein Dispatch-Argument angezeigt.Siehe unten.
Graph Builder(
Size( 1242, 709 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ), Group X( :Wafer ID ), Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) ),
Where( dt:Channel == chnl & dt:Test State == tst ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Results for Channel=1 and Test State=1" )}
),
Dispatch(
{},
"Y",
ScaleBox,
{Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);Da Ihr Titel benutzerdefiniert ist, entfernen Sie den Dispatch zur OutlineBox und verwenden Sie dann diesen Code in Ihrer for-Schleife. Jedes Diagramm hat dann die gleiche Skalierung, die in Ihrem Skript angegeben ist.
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftKann ich Ihnen noch eine Frage zur For()-Schleife mit den Diagrammen stellen?
Gibt es eine Möglichkeit, die beste Anpassung automatisch zu skalieren?
Wenn ich die Skala im Beispiel von Min = 5 und Max = 30 erhalten kann, können wir eine bessere Vorstellung davon bekommen, wie genau sich die Teile über die Frequenzen hinweg verhalten ...
Natürlich muss ich die Ausreißer vorher entfernen.
Danke
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftIch kann Ihnen gar nicht genug für Ihre Hilfe danken. Niemand hier bei der Arbeit könnte mir auch nur annähernd sagen, wie ich das tun soll, was Sie getan haben.
Damit haben Sie die Zeit, die ich dafür benötige, um mindestens 80 % verkürzt.
Ihre Lösung und die SQL-Skripte, die ich schreibe, um auf unsere Datenbankdateien zuzugreifen, werden uns bei unserem Kunden in eine fantastische Lage versetzen.
Danke nochmal..
D
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftDanke für die Antwort. Ich werde Ihre Beispiele verwenden, um zu sehen, ob ich es herausfinden kann.
Ich habe versucht, die Anweisung „select where“ zu verwenden, und es hat ziemlich gut funktioniert.Ich habe nur versucht, die Menge an Code zu reduzieren, die ich schreiben musste. Ich habe 5 verschiedene Tests mit allen oben aufgeführten Parametern.
Ich melde mich wieder, wenn ich es ausprobiert habe.
Danke noch einmal..
Betreff: JSL – Generieren Sie ein -xy-Diagramm, das Spalten mit verschiedenen Variablen durchläuftHallo,
Ich würde empfehlen, Ihren Ansatz zum Generieren der Diagramme so zu ändern, dass anstelle des Datenfilters Where-Anweisungen verwendet werden.Der Datenfilter eignet sich hervorragend für interaktive visuelle Analysen. Da Ihre Ansicht jedoch unsichtbar ist, empfehle ich Ihnen, eine Where-Anweisung zu verwenden.Wenn eine Where-Anweisung verwendet wird, ist ein Where-Textfeld sichtbar. es kann gelöscht werden. Sie können auch ein By-Argument verwenden, By(:Channel, :Test State). Dann muss das Skript auf jedes GB zugreifen und die Präsentation speichern.
Ich bin kein Fan von „Präsentation speichern“, ich verwende gerne P3ICLI, ein kostenloses externes Befehlszeilenprogramm, um PPTX-Folien aus meiner JMP-Ausgabe zu erstellen. Sehen JSL-Beispiel zum Erstellen von PPTX mit P3ICLI . Wie jeder Code sieht er chaotisch aus, kann aber sehr individuell erstellt werden und die Diagramm- und Titelgröße steuern.
Für das Speichern mehrerer Plots mit „Präsentation speichern“ haben wir jedoch einige Tricks zusammengestellt, um mehrere Layout-Anzeigen als Bilder zu protokollieren. Verwenden Sie dazu die Option „Präsentation speichern“, aber Sie müssen mit der Größe herumspielen.
Im Anhang finden Sie jedenfalls eine Dummy-Datentabelle zur Emulation Ihres Szenarios und zwei Skripte, die jeweils ein Bild pro Seite speichern
Hoffe das hilft.