Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Das folgende Skript stellt im Graph Builder einige Spalten (mehrere Parameter auf der Y-Achse) dar, deren Spaltennamen mit P beginnen. Ich möchte gleichzeitig ein paar andere Spalten zeichnen, deren Spaltennamen mit N auf der nächsten SEITE beginnen (Befehl in meinem Skript unten kommentiert).
Auf der nächsten SEITE möchte ich ein paar weitere Spalten zeichnen, deren Spaltennamen beispielsweise mit V usw. beginnen.
Die Informationen zur Spaltenkategorie können entweder in einer separaten Datentabelle oder in einer anderen Form, vielleicht einer Liste, vordefiniert sein (da bin ich flexibel). Die Frage ist, ob dies über JSL machbar ist und wenn ja, wie?
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
Automatisierung und SkripterstellungWindowsBetreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Die Seite wird für die zeilenbasierte Gruppierung verwendet und kann daher nicht für den gewünschten Zweck verwendet werden. Sie könnten für jede Gruppe eine Liste mit Spalten erstellen und dann diese Liste durchlaufen, während Sie beispielsweise mit dem V-Listenfeld separate Diagrammersteller an ein neues Fenster anhängen.
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Selbst eine Neuformatierung der Datentabelle hilft nicht – die einzelnen Y-Gruppen zeigen alle Elemente:

Wenn es nur darum geht, die Spaltenuntergruppen aufzuteilen, können Sie a verwenden Datenfilter anstatt Seite :

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@hogi @jthi OK. Danke. Eine alternative Idee wäre, das erste Diagrammerstellungsfenster mit einem Satz von Spalten in einem Journalfenster zu platzieren/zu senden, den nächsten Satz neuer Spalten unter dem ersten usw. zu platzieren und dann offene Diagrammfenster und zugehörige Datentabellen zu schließen. Wie geht das über JSL?
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Erstellen Sie eine Liste mit Listen, die die für Sie interessanten Spalten enthalten, und durchlaufen Sie diese, während Sie Diagrammersteller erstellen und diese an das Listenfeld „Journal/V“ anhängen. Sind alle Spalten gleich groß oder ändert sich die Größe der Y-Achse?
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Hier ist eine Option, aber dies ist nicht die einzige, die Sie verwenden können
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Wenn Sie für jeden Fall/jede Gruppe unterschiedliche Spalten haben, müssen Sie die JSL hinzufügen, um den Wert von „my_group“ bei jeder Änderung zu ändern.
Sie können dies wahrscheinlich erreichen, indem Sie ein zusätzliches For Each() außerhalb des aktuellen For Each( {my_group) hinzufügen, wobei Sie den Wert von my_group ändern, bevor Sie es wieder in das aktuelle For Each() eingeben.
Ich schlage vor, dass Sie es versuchen und sich mit weiteren Fragen an die Community wenden, wenn Sie auf weitere Probleme stoßen.
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@jthi Die Anzahl der auf der Y-Achse aufgetragenen Spalten ist für jeden Fall/jede Gruppe unterschiedlich.
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@jthi @txnelson Danke.
Meine zu zeichnenden Parameter sind wie in der folgenden Tabelle gruppiert. Ziel ist es, jede Gruppe im Journal untereinander anzuhängen. Außerdem möchte ich, dass der Gruppeneintrag jeweils der Diagrammtitel ist.Wie kann in diesem Fall die obige JSL geändert werden?

Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?In Ihrem Fall würde ich dann ein assoziatives Array verwenden, in dem der Schlüssel der Gruppenname und die Werte eine Liste von Parametern (Spalten) wären. Dann durchlaufen Sie dieses assoziative Array mit „For Each“, während Sie Ihr Tagebuch erstellen
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@txnelson @hogi . Vielen Dank für Ihre Vorschläge. Ich bin nach einer kurzen Pause wieder bei diesem Thema.
@jthi Führen Sie diesen Teil Ihres Skripts in meinem JMP 16.2 aus
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);gibt

dh
{"PNP1", "PNP2", "PNP3"} Und
{"NPN3", "NPN2", "NPN1", "NPN4"}werden nicht auf der Y-Achse dargestellt, wie in meinem ersten Beitrag erwähnt (dh übereinander mit sichtbaren Referenzlinien für die Spezifikationsgrenzen), sondern in zwei separaten Diagrammen.
Wie oben erwähnt, sind meine zu zeichnenden Parameter wie in der folgenden separaten Tabelle gruppiert
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);Ich möchte, dass die Parameter in jedem Diagramm nach dem Eintrag in der Gruppenspalte der obigen Tabelle gruppiert werden.
Beispielsweise hat das obere Grundstück eine Kachel von Gleichstrom mit „PNP1“, „PNP2“, „PNP3“ und „PNP6“ auf der y-Achse aufgetragen und darunter das nächste Diagramm mit Titel Wechselstrom mit „NPN2“, „NPN3“, „NPN1“ und „NPN4“ eingezeichnet und schließlich das dritte Diagramm unten mit Titel „RF“ mit „INV2“ und „INV4“. " auf der y-Achse aufgetragen.
Könnte ich bitte Hilfe beim assoziativen Array-Ansatz bekommen, um fortzufahren? So erhalte ich das Einzigartige Gruppen , aber wie bekomme ich das zugehörige Parameter (verwenden Sie Get Rows Where ()) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi , ich bevorzuge zusätzlich zum Tagebuch die Option „Sammlerfenster“, da wir dadurch mehr Flexibilität haben, je nachdem, was ich mir ansehen möchte.)
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Mit JMP 16 konnte ich das Problem, das Sie sehen, reproduzieren.Es ist mir nicht gelungen, mithilfe von „Variablen hinzufügen“ usw. die gewünschten Ergebnisse zu erzielen.Durch die Verwendung einer Technik, bei der die Graph Builder-JSL in einer Zeichenfolgenvariablen erstellt und dann ausgeführt wird, konnte ich jedoch die Boxplots erstellen

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@txnelson Dies funktioniert in 16.2 (JMP beschwert sich über Syntaxfehler, zeichnet das Diagramm aber trotzdem auf).
Wenn ich eine andere Liste habe
paraGroupList = {"DC", "AC"};Wie ordne ich zu Gleichstrom als Charttitel (derzeit PNP1 und 2 weitere vs. lot_id ) beim Plotten (oberes Diagramm)
{"PNP1", "PNP2", "PNP3"}Und Wechselstrom als Charttitel (derzeit NPN3 & 3 weitere vs. lot_id ) für das Plotten (unteres Diagramm)?
{"NPN3", "NPN2", "NPN1", "NPN4"}Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Führen Sie das Diagramm aus.
Klicken Sie auf den Titel und ändern Sie ihn.
Gehen Sie dann zum roten Dreieck und wählen Sie „Speichern“ für das Skript.
Schauen Sie sich das Skript an und Sie werden die JSL sehen und sehen, wie sie den Titel geändert hat.
Übernehmen Sie es in Ihr Skript.
Ich empfehle Ihnen dringend, sich die Zeit zu nehmen, den Scripting Guide zu lesen.Es wird Ihr Erlernen von JSL beschleunigen
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@txnelson Danke, ich habe herausgefunden, wie man den Diagrammtitel macht.
Wie man aus dem ausbricht create_graph Funktion wenn ycollist ist leer?
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Verwenden Sie die Funktion „Length()“, um zu prüfen, ob die Liste Einträge enthält, und umgehen Sie dann den Code.
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@txnelson Danke.Es scheint, dass ich es nicht verwenden kann brechen () innerhalb meiner Plotfunktion, wenn sie in einer for-Schleife verwendet wird. Ich werde sehen, welche Möglichkeiten ich habe.
Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Führen Sie einfach die erforderliche Bewertung durch. Wenn diese nicht erfüllt ist, umgehen Sie den Code.Siehe unten:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?@txnelson Danke. Beim Ausführen des Skripts erhalte ich Fehler (unter JMP 16.2), die ich nicht beseitigen kann.

Betreff: Können Spalten, die im Graph Builder dargestellt werden, durch PAGE mithilfe einer Spaltennamenskategorie getrennt werden?Entschuldigung, ich bin zu meiner vorherigen Antwort überstürzt.Die folgende JSL umgeht die Erstellung des Diagramms, wenn my_group leer ist
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);