Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Ich bin ein absoluter Anfänger mit JSL, ich lerne immer noch –
Ich habe viele Dateien, die ich mit Graph Builder überprüfen muss, und jede hat eine unterschiedliche Anzahl von Spalten. Die einzige Konstante ist, dass ich weiß, dass ich Spalte 1 als Overlay, Spalte 2 auf der X-Achse, Spalte 3 auf der Y-Achse und alle übrigen Spalten im Spaltenumschalter haben möchte. Ich hätte gerne ein Skript, das alle Graph Builder-Fenster für alle aktuell geöffneten Datentabellen mit diesen Einstellungen öffnet, aber ich weiß nicht, wie das geht. Das kommt mir am nächsten:
Graph Builder(
Size( 1900, 1200 ),
Variables(
X( :Column(2) ),
Y( :Column(3) ),
Overlay( :Column(1) )
),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) ),
Column Switcher( :Column(3) ),
SendToReport(
Dispatch(
{},
"",
ScaleBox
)
)
);
Die beiden Dinge, bei denen ich Hilfe brauche: (1) Finden Sie heraus, wie Sie den Spaltenumschalter so einstellen, dass er automatisch alle Spalten in der Datentabelle lädt, ohne mich zu fragen, und (2) binden Sie dieses Skript in eine Schleife, die alle offenen Spalten durchläuft Datentabellen.
Vielen Dank im Voraus!
MassenanpassungBetreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Vielen Dank an diejenigen hier, die geholfen haben. Ich habe das Gefühl, dass ich hier nicht viel Eigenes hinzugefügt habe. Das ist im Grunde das, was ich herausgefunden habe:
Das Ziel bestand darin, ein Skript zu haben, das einen Ordner voller Textdateien nacheinander durchgeht, sie lädt und ein Graph Builder-Fenster mit einigen voreingestellten Einstellungen öffnet. Wenn Graph Builder dann geschlossen wird, wird das Fenster automatisch geöffnet Nächstes.
Der Ansatz, den ich verwendet habe, bestand darin, es mit globalen Variablen zu verwalten: „regFlist“ ist die Liste der Dateien, die noch geöffnet werden müssen, und „stopReg“ ist ein Flag, das, wenn es aktiviert ist, den Prozess unterbricht.
Es gibt zwei Skripte: (1) reg_Next.jsl – prüft regFlist, und wenn es leer ist, fragt es nach einem zu verwendenden Ordner; andernfalls lädt es die nächste Datei aus der regFlist-Liste (wenn regStop nicht gesetzt ist), (2) reg_Stop.jsl – leert einfach regFlist und setzt die regStop-Variable; Wird verwendet, um den Prozess vorzeitig zu stoppen.
Ich bin ein absoluter Anfänger mit .jsl und daher sehr offen für Feedback/konstruktive Kritik.
reg_Next.jsl
//!<BR /><BR />// use global variables (since hey, what could go wrong? ;)</img> )
Names Default To Here( 0 );
// get path to self
selfPath = get default directory() || "/reg_Next.jsl";
// check to see if user has requested a stop
If( stopReg == 1 ,
stopReg = 0;
regFlist = {};
Stop();
);
// initialize list of files to review if there aren't any in the list
If( Is Empty( regFlist ) | N Items( regFlist ) < 1,
jmpDir = Pick Directory( "Select the jmp directory." );
regFlist = Files In Directory( jmpDir );
);
// open data table and remove it from the regFlist
dt = Open( jmpDir || "/" || regFlist[1] );
regFlist = Remove( regFlist, 1 );
// set up for column switcher
colList = dt << get column names( string );
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
Remove From( colList, 1, 2 );
// open graph builder
gb = dt << Graph Builder(
size( 800, 600 ),
Variables( X( As Column( col2 ) ), Y( As Column( col3 ) ), Overlay( As Column( col1 ) ) ),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) )
);
cs = gb << Column Switcher( col3, colList );
// set up mechanism to re-run myself when graph builder is closed
If( N Items( regFlist ) == 0,
gb << on close( Close( dt, nosave ) ),
gb << on close(
Close( dt, nosave );
Open( selfPath, Run JSL( 1 ) );
)
);reg_Stop.jsl
//!
Names Default To Here( 0 );
regFlist = {};
stopReg = 1;Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?@BHarris Es wäre schön, wenn Sie Ihre Lösung zu dieser Diskussion hinzufügen könnten, damit sie der gesamten Diskussionsgemeinschaft zur Verfügung steht.
Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Ich habe es herausgefunden. Ich wünschte wirklich, JMP hätte manchmal ein Terminal ...
Wenn hier noch jemand nach der gleichen Lösung sucht, antworten Sie bitte und ich teile Ihnen mit, was ich herausgefunden habe.
Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?@txnelson – Ich habe gerade etwa drei Stunden mit dem Scripting Index und dem Scripting Guide verbracht und versucht, dies zum Laufen zu bringen, konnte aber nicht herausfinden, wie ich die Funktion „on close()“ dazu bringen kann, die nächste Datei zu öffnen. Folgendes dachte ich *sollte* funktionieren, funktioniert aber nicht.
(Zur Erinnerung: Das Ziel besteht darin, diese Dateien einzeln durchzugehen, ein Graph Builder-Fenster aufzurufen und mir die Möglichkeit zu geben, die Datei auszuwerten. Wenn ich dann das Graph Builder-Fenster schließe, sollte die Datentabelle geschlossen und die nächste Datei geöffnet werden und plotte es.)
Dieses Skript heißt „jmp_reg_4.jsl“ und befindet sich auf meinem Desktop:
Names Default To Here( 0 ); // <-- trying to use globals so the file list will be maintained between invocations
/*
All of what you suggest is doable in JMP.
You can use "Files in Directory()" to get the file list, and then loop through them.
You can attach an "On Close()" function to the Graph Builder object, which will close the current data table, and then go get the next file from your list of files from the "Files in Directory()" list.
Examples and description are in the Scripting Index
Help==>Scripting Index
*/
If( Not( As Global( "flist" ) ),
jmpDir = Pick Directory( "Select the jmp directory." );
flist = Files In Directory( jmpDir );
);
dt = Open( jmpDir || "/" || flist[1] );
Remove( flist, 1 );
colList = dt << get column names( string );
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
Remove From( colList, 1, 2 );
gb = dt << Graph Builder(
size( 800, 600 ),
Variables( X( As Column( col2 ) ), Y( As Column( col3 ) ), Overlay( As Column( col1 ) ) ),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) )
);
cs = gb << Column Switcher( col3, colList );
gb << on close(
Close( dt, nosave );
run script( "/Users/bh/Desktop/jmp_reg_4.jsl" );
);Ich dachte, ich erstelle eine globale Liste der zu untersuchenden Dateien, und wenn ich dann bei jedem Aufruf noch Elemente in der Variablen „flist“ (Dateiliste) habe, greifen wir einfach zum nächsten, laden es und zeichnen es auf. Aber es funktioniert nicht wie erwartet: Wenn ich das Graph Builder-Fenster schließe, wird die Datentabelle korrekt geschlossen, aber dann wird nichts anderes ausgeführt.
Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Ich kann auch keinen Weg finden, aber durch ein paar Klicks auf die Tabulatortaste wird der Fokus auf die Liste der Spalten im Spaltenumschalter verschoben.

Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Ich kenne keine Möglichkeit, die zweite Anfrage zu erfüllen.Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Danke!
Wie wäre es mit Platz 2 meiner Liste? (Ich denke, ich kann #3 herausfinden ...)Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Alles, was Sie vorschlagen, ist in JMP machbar.
Sie können „Files in Directory()“ verwenden, um die Dateiliste abzurufen und diese dann zu durchlaufen.
Sie können eine „On Close()“-Funktion an das Graph Builder-Objekt anhängen, die die aktuelle Datentabelle schließt, und dann die nächste Datei aus Ihrer Dateiliste aus der Liste „Files in Directory()“ abrufen.
Beispiele und Beschreibungen finden Sie im Scripting Index
Hilfe==>Skriptindex
Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Beeindruckend! Ich habe immer wieder versucht, „Column Switcher( :Column(3), :Column(all) )“ und Variationen davon zu verwenden
Wäre eine dieser Verbesserungen am Skript möglich? (1) Geben Sie ihm stattdessen einen Ordner voller TXT-Dateien und lassen Sie sie einzeln in Graph Builder öffnen. Wenn ich Graph Builder schließe, wird die entsprechende Datentabellendatei geschlossen und die nächste automatisch geöffnet (2). Verschieben Sie den Fokus auf den Spaltenumschalter, damit ich sofort mit dem Pfeilfahren durch die Variablen beginnen kann, ohne in das Spaltenumschalter-Feld klicken zu müssen. (3) Das Graph Builder-Fenster wird beim Öffnen in voller Größe auf dem Bildschirm angezeigt.
JMP entwickelt sich schnell zu meiner Lieblingssoftware.Betreff: Wie füge ich automatisch alle Spalten zum Spaltenumschalter in .jsl hinzu?Das Scripting ist sehr einfach,
Names Default To Here( 1 );
// Loop across all data tables
For( i = 1, i <= N Table(), i++,
dt = Data Table( i );
// Find all of the column names
colList = dt << get column names( string );
// Get the first 3 columns for special processing
col1 = colList[1];
col2 = colList[2];
col3 = colList[3];
// Remove first 2 from column switcher columns from the overall list
Remove From( colList, 1, 2 );
// Run the Graph Builder
dt << Graph Builder(
Size( 570, 621 ),
Variables(
X( As Column( col2 ) ),
Y( As Column( col3 ) ),
Overlay( As Column( col1 ) )
),
Elements( Points( X, Y, Legend( 10 ) ), Line( X, Y, Legend( 11 ) ) ),
Column Switcher( col3, colList )
);
);