Wie implementiere ich mit JSL?Hallo zusammen,
Wie führe ich die in der Excel-Datei (im Anhang) beschriebenen Schritte mithilfe von JSL aus? Ich habe auch ein JSL-Skript angehängt, das nützlich sein kann, um einige der Zwischenschritte zu erreichen, die ich mit JSL implementieren möchte. Sie können es also kopieren, wenn es relevant und nützlich ist.
Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where(
:Case == "C",
Fit Special( yTran( "Log" ), {Line Color( "Black" )} )
),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where(
:Case == "E",
Fit Special( yTran( "Log" ), {Line Color( "Blue" )} )
),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
)Re: Wie implementiere ich mit JSL?Hallo Jim,
Ich versuche, eine log-lineare Darstellung (log auf der Y-Achse) für einen Fall = A / B / C und eine zweite Bedingung in Spalte2 == "20/30/40" zu erstellen. Ich habe das Skript unten gepostet (2 etwas unterschiedliche Wege), aber ich bekomme eine Fehlermeldung wie unten. Wohin gehe ich falsch?
Unerwartetes "und CPP". Vielleicht fehlt ein "," oder ")".
Der Versuch, Argumente der Funktion "Fit Where" zu parsen.
Zeile 6 Spalte 28:: Fall == "A" ►und Spalte2 == "20",
1 1. Weg:
Bivariate (
Y (: Name ("Y1")),
X (: X1)
// Anpassen (yTran ("Log"), {Line Color ({213, 72, 87})}),
Fit wo (
: Fall == "A" und Spalte2 == "20",
Fit Spezial (yTran ("Protokoll"), {Linienfarbe ("Dunkelgrün")}),
)
SendToReport (
Versand(
{},
"1",
ScaleBox,
{Min (60,936357421875), Max (81.283232421875), Inc (2),
Kleinere Zecken (1), Etikettenzeile (
{Hauptgitter anzeigen (1), Nebengitter anzeigen (1)}
)}
)
Versand(
{},
"2",
ScaleBox,
{Maßstab ("Protokoll"), Format ("Wissenschaftlich", 11), Min (0,0000002),
Max (0.000634968347287381), Inc (1), kleinere Zecken (1),
Beschriftungszeile (
{Hauptgitter anzeigen (1), Nebengitter anzeigen (1), Schriftgröße festlegen (12)}
)}
)
)
)
2 2. Weg:
Bivariate (
Y (: Name ("Y1")),
X (: X1)
// Anpassen (yTran ("Log"), {Line Color ({213, 72, 87})}),
Fit wo (
: Fall == "A"
: Spalte2 == "20",
Fit Spezial (yTran ("Protokoll"), {Linienfarbe ("Dunkelgrün")}),
)
SendToReport (
Versand(
{},
"1",
ScaleBox,
{Min (60,936357421875), Max (81.283232421875), Inc (2),
Kleinere Zecken (1), Etikettenzeile (
{Hauptgitter anzeigen (1), Nebengitter anzeigen (1)}
)}
)
Versand(
{},
"2",
ScaleBox,
{Maßstab ("Protokoll"), Format ("Wissenschaftlich", 11), Min (0,0000002),
Max (0.000634968347287381), Inc (1), kleinere Zecken (1),
Beschriftungszeile (
{Hauptgitter anzeigen (1), Nebengitter anzeigen (1), Schriftgröße festlegen (12)}
)}
)
)
)
Vielen Dank,
ANZEIGE
Re: Wie implementiere ich mit JSL?Hallo Jim, ich habe beide probiert (einzeln)
dt << Markierung nach Spalte (: Wafer-ID);
dt << Markierung nach Gruppe (: Wafer-ID);
bevor Sie die Zeichnungen wie unten beschrieben machen, aber es tut nicht, was ich will
Biv = dtStack << Bivariate (
Y (...
Vielen Dank,
ANZEIGE
Re: Wie implementiere ich mit JSL?Vielen Dank Jim für deine klaren Erklärungen. Lass es mich ausprobieren.
Grüße,
ANZEIGE
Re: Wie implementiere ich mit JSL?Wenn Ihre JMP-Datentabelle in Ihrem Ordner "Documents" gespeichert ist und "Dateiname.jmp" heißt, ist Ihre JMP-Datentabelle korrekt.
Der Code
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
verwendet nur die Stack-Datentabellenplattform
Tabellen ==> Stack
Sie können es manuell für Ihre Datentabelle ausführen und erhalten dieselben Ergebnisse wie das Skript. Grundsätzlich gibt es jedoch zwei Gruppen von Spalten, die gestapelt werden sollen: x1, x2, x3 und die gleichen y-Varianten von y1, y2, y3. Daher die Angabe der 6 Spalten in der Columns () - Spezifikation und die Einstellung der Seriennummer (2). Das Contigous-Element gibt an, die Liste in der Mitte aufzuteilen, anstatt zwischen x1, y1 ... usw. zu wechseln. Wenn Sie einen Satz von Spalten stapeln, werden die Messwerte in eine neue Spalte mit dem Namen Data geschrieben. Die Spaltennamen werden in einer neuen Spalte namens Label platziert. Da wir zwei Gruppen von Spalten stapeln, gibt es die Spalten Data und Data 2, Label und Label 2.
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Dieser Code löscht nur die Spalten Label und Label 2, da diese nicht benötigt werden. Anschließend werden Data und Data 2 in aussagekräftigere Namen umbenannt.
Informationen zur Stack-Plattform finden Sie im Dokument Using JMP
Hilfe ==> Bücher ==> Verwenden von JMP
Re: Wie implementiere ich mit JSL?Hallo Jim,
Ich habe meine Excel-Datei geöffnet und als JMP-Arbeitsblatt gespeichert. Dann benutze ich
dt = öffnen ( "C: \ Benutzer \ Benutzername \ Dokumente \ Dateiname.jmp" );
Ist dieses Format korrekt?
Ich denke, ich bin nicht in der Lage, den Plot nach der Implementierung Ihres Codes zu erhalten. Ich muss Ihren Code besser verstehen, da sich meine Datensatzparameter in Parameternamen usw. etwas unterscheiden.
Können Sie bitte erklären, was "Label", "Label2", Data, Data 2 ist? Muss ich sie explizit in meinem Datensatz definieren? Sie sind derzeit nicht definiert. Ich sehe sie nicht in Ihren von Ihnen erstellten Dataset-Tabellen definiert.
dtStack = dtSumm << Stapel (
Spalten (: x1,: x2,: x3,: y1,: y2,: y3),
Quellbeschriftungsspalte ( "Etikette" )
Gestapelte Datenspalte ( "Daten" )
Name ( "Nicht gestapelte Säulen" ) (Behalten (: Fall)),
Anzahl der Serien ( 2 )
Zusammenhängend
);
// Bereinigen Sie die Datentabelle
dtStack << Spalten löschen ({ "Etikette" . "Label 2" });
dtStack: Daten << Name einsetzen ( "x1_x2_x3" );
dtStack: Daten 2 << Name einsetzen ( "y1_y2_y3" );
Grüße,
ANZEIGE
Re: Wie implementiere ich mit JSL?Wie sieht Ihr Tabellenlayout aus? Wenn es sich um eine Zeilen- und Spaltentabelle handelt ... wie eine JMP-Datentabelle, dann lautet die Syntax einfach:
dt = open("<PATH to="" your="" excel="" file="">");</PATH>Re: Wie implementiere ich mit JSL?Hallo Jim,
Oh! Ich sehe ... zu schade, dass ich es nicht gemerkt habe. Vielen Dank, dass Sie das erklärt haben. Das klingt gut ! Ich lese die Daten aus einer Excel-Datei in JMP. Gibt es einen intelligenten Weg, dies zu tun?
Grüße,
Anzeige
Re: Wie implementiere ich mit JSL?OK .... ich hätte klarer sein sollen. Der gesamte von mir bereitgestellte Code zum Erstellen der Datentabelle wurde dort abgelegt, um lediglich eine Beispieldatentabelle erstellen zu können, die den Code veranschaulicht. Sie können die Datentabelle direkt aus Excel oder von wo auch immer Sie Ihre Daten haben, eingeben. Der einzige wirkliche Teil des Skripts ist erforderlich, sobald Sie Ihre Daten eingelesen haben:
// Create the Median Table
dtSumm = dt << Summary(
Group( :Case ),
Median( :x1 ),
Median( :x2 ),
Median( :x3 ),
Median( :y1 ),
Median( :y2 ),
Median( :y3 ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Biv = dtStack << Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where( :Case == "C", Fit Special( yTran( "Log" ), {Line Color( "Black" )} ) ),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where( :Case == "E", Fit Special( yTran( "Log" ), {Line Color( "Blue" )} ) ),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
);
Übrigens, mit welcher Methode geben Sie die Daten ein? Wenn Sie ein Problem damit haben, können wir auch daran arbeiten.
Re: Wie implementiere ich mit JSL?Hallo Jim,
Vielen Dank für Ihre schnelle Lösung! Ich habe noch ein paar Fragen, wenn Sie helfen können.
Ich frage mich, ob dieses JSL-Skript für große Datenmengen problemlos skalierbar ist.
1 Anscheinend haben Sie die Anzahl der Instanzen "A", "B", ... "F" hartcodiert.
Es ist in Ordnung, dies zu tun, wenn Sie 2-3 Instanzen von jedem Fall haben, aber was ist, wenn ich mehr als 100 Instanzen für jeweils "A", "B" .. "F" habe. Dann muss ich "A" 100s im Code unten wiederholen?
Werte setzen (
{ "EIN" . "EIN" . "EIN" . "B" . "B" . "B" . "C" . "C" . "C" . "D" . "D" . "D" . "E" . "E" .
"E" . "F" . "F" . "F" }
2 Sie haben auch jeden der Werte für die Spaltenvariablen eingegeben: "x1", "x2" .... "" y3 "wie unten gezeigt. Ich habe wieder> 1000 Datenzeilen für jede der Variablen. Wenn Sie dann alle Werte für jede Variable eingeben, erscheint das umständlicher.
Neue Spalte ( "x1" .
Numerisch,
"Kontinuierlich" .
Format ( "Beste" . 12 )
Werte setzen (
[ 1.61428690437666 . 10.1190080125253 . 6.73662807021899 . 8.01466805846589 .
6.68158041069847 . 5.7112128821412 . 2.84688009253613 . 8.24143884561082 .
7.93797713835799 . 7,60500406538651 . 6.10376724167353 . 7.49901866647003 .
6,75689551558008 . 8.47900118679714 . 8.31129239105815 . 2.25776032554558 .
3.47918899345697 . 7.54113635144146 ]
Können Sie mir bitte helfen lassen, wenn es einen weniger umständlichen Weg gibt, dies für größere Datensätze zu implementieren?
Grüße,
ANZEIGE
Re: Wie implementiere ich mit JSL?Hallo Jim,
Vielen Dank für Ihre ausführliche Antwort. Ich schätze es, lass es mich versuchen und ich werde dich wissen lassen.
Grüße,
ANZEIGE
Re: Wie implementiere ich mit JSL?Hier ist ein einfaches Skript, das die gewünschten Tabellen und Ausgaben generiert

Names Default To Here( 1 );
//dt = Current Data Table();
dt = New Table( "Example",
Add Rows( 18 ),
New Column( "Case",
Character,
"Nominal",
Set Values(
{"A", "A", "A", "B", "B", "B", "C", "C", "C", "D", "D", "D", "E", "E",
"E", "F", "F", "F"}
)
),
New Column( "x1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1.61428690437666, 10.1190080125253, 6.73662807021899, 8.01466805846589,
6.68158041069847, 5.7112128821412, 2.84688009253613, 8.24143884561082,
7.93797713835799, 7.60500406538651, 6.10376724167353, 7.49901866647003,
6.75689551558008, 8.47900118679714, 8.31129239105815, 2.25776032554558,
3.47918899345697, 7.54113635144146]
)
),
New Column( "x2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[5.47938474920207, 6.18766439511594, -6.23767012529314, 2.09002457182833,
4.8113689086524, 7.03651072603935, -3.04550198990374, 11.8452893346908,
-3.05733149292515, 1.30049361512582, 1.01507442873964, 2.09317649939774,
7.41286830274582, 7.34393706953047, 6.35773586672512, 6.45581826439945,
14.9562095399741, 10.0634660675686]
)
),
New Column( "x3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[11.2656869903562, 2.97417375436776, 2.7691367152201, 9.75641926280114,
9.70879299538533, 7.16035571615696, 9.79872763007834, 2.99361815483094,
7.34989095258795, 11.8347155967071, 13.840944548243, 6.91213509473278,
12.9829334337807, 4.69016477226892, 6.5541527241742, 10.449257706405,
8.71860875295487, 2.75703552707507]
)
),
New Column( "y1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.0000000021187715823, 0.0000000007070458434, 0.0000000021305415897,
0.000000002187751479, 0.0000000015163549964, 0.0000000006662765716,
0.0000000013568530851, 0.0000000022185225971, 0.0000000008126367887,
0.0000000014370349256, 0.0000000025500410724, 0.0000000019674810787,
-0.0000000005869971784, 1.82706897276242e-10, 0.0000000014877347984,
6.66831811738687e-11, 0.000000001044052589, 0.0000000019169076496]
)
),
New Column( "y2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.0000000111634035809, 0.0000000150934383918, 0.0000000092632031811,
0.0000000014897580792, 0.0000000129447047918, 0.0000000038471184132,
0.000000020378302554, 0.0000000084939824652, 0.0000000306867238143,
0.0000000083704926078, -0.0000000019845073029, 0.0000000221987482462,
-1.12731592825071e-10, 0.0000000341691546291, 0.0000000243189078007,
0.0000000142112672565, 0.0000000157219085064, 0.0000000163609065787]
)
),
New Column( "y3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.0000001356080410826, 0.0000003110230604448, 0.0000000731675260394,
0.0000000683020170167, 0.0000000166660984052, 0.0000001245784167858,
0.0000001917424143272, 0.0000000592217777822, 0.0000000682651021339,
0.0000001310868753601, 0.0000000929550618751, 0.0000001752103336127,
0.0000000988598859477, 0.0000000990272186345, 0.000000121745118966,
0.0000001243361078368, 0.0000001992144095096, 0.000000090951358824]
)
)
);
// Create the Median Table
dtSumm = dt << Summary(
Group( :Case ),
Median( :x1 ),
Median( :x2 ),
Median( :x3 ),
Median( :y1 ),
Median( :y2 ),
Median( :y3 ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Biv = dtStack << Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where( :Case == "C", Fit Special( yTran( "Log" ), {Line Color( "Black" )} ) ),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where( :Case == "E", Fit Special( yTran( "Log" ), {Line Color( "Blue" )} ) ),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
);Re: Wie implementiere ich mit JSL?Hallo Jim,
Wie wähle ich für jeden Fall (A / B / C) einen anderen Markierungsstil (*, z, x usw.) und Markierungsfarbe (rot / blau) aus und implementiere ihn mithilfe von JSL? Ich kann jeder Zeile in der gestapelten JMP-Tabelle manuell einen Markierungsstil und eine Markierungsfarbe zuweisen. Kann dies jedoch problemlos in JSL durchgeführt werden?