JSL-Skript: Graph Builder zum Zeichnen aller Spalten einer DatentabelleHallo zusammen,
Langjähriger JMP-Benutzer (Neuling im JSL-Scripting), erster Poster. Ich würde mich über jede Hilfe freuen!
Ich schreibe ein Skript, das zwei Dinge tut:
1. Öffnen Sie eine Textdatei, importieren Sie die numerischen Daten und speichern Sie dann die Datentabelle, damit ich sie später öffnen kann.
2. Verwenden Sie den Graph Builder, um alle „y-Achsen“-Spalten gleichzeitig zu zeichnen
Ich habe keine Probleme mit Punkt 1, daher sind keine Kommentare dazu erforderlich. Punkt Nr. 2 bereitet mir Probleme. Ich habe keine Möglichkeit gefunden, alle Spalten der Y-Achse gleichzeitig in einem Diagramm darzustellen.
Die Datentabelle verfügt über eine x-Achsen-Datenspalte (Daten, die auf der x-Achse des resultierenden Diagramms verwendet werden sollen), sie kann jedoch eine oder mehrere Datenspalten enthalten, die sich auf derselben y-Achse des Diagramms befinden müssen. Ich versuche, diese Daten visuell zu vergleichen, und die Verwendung eines einzigen Diagramms mit allen aufgezeichneten Daten ist sehr nützlich. Ich könnte die Daten wahrscheinlich einfach in einen x- und einen y-Datensatz stapeln und eine dritte Spalte für die Überlagerung verwenden, aber das möchte ich nicht.
Irgendwelche Ideen?
Betreff: JSL-Skript: Graph Builder zum Zeichnen aller Spalten einer DatentabelleDanke Jim,
Das hat perfekt funktioniert. Und ich freue mich über Ihren sanften Anstoß, das Handbuch zu lesen – ich werde es noch einmal tun und hoffe, dass ich noch ein paar Prozent davon behalten kann. Allerdings lerne ich nicht immer aus dem Handbuch, und deshalb bin ich hierher gekommen. Ehrlich gesagt hätte ich ungefähr fünf Stunden gebraucht, um herauszufinden, was Sie getan haben. Daher schätze ich Ihren fachkundigen Ansatz, da er mir wertvolle Zeit gespart und mir etwas Neues gezeigt hat, das ich in Zukunft nutzen kann. Prost
Betreff: JSL-Skript: Graph Builder zum Zeichnen aller Spalten einer Datentabelle- Sie müssen den Scripting Guide lesen
- Ich hatte Ihnen ein Skript zur Verfügung gestellt, das Ihnen zeigte, wie die JSL aussehen musste, um Ihr Diagramm zu erstellen, oder zumindest meine Interpretation des gewünschten Diagramms.
- Mein Vorschlag zur interaktiven Ausführung besteht darin, Ihnen die Möglichkeit zu geben, das Diagramm so zu erstellen, wie Sie es möchten. Anschließend müssen Sie JMP nur noch das Skript für das Diagramm generieren lassen, das Ihnen dann zeigt, was Sie benötigen erstellt werden, um das Diagramm zu erstellen.
- Ich habe ein Skript angehängt, das die Datentabelle zur Halbleiterfähigkeit aufnimmt und dann unter Verwendung aller fortlaufenden Spalten das überlagerte Diagramm erstellt.Die erste fortlaufende Spalte wird als X-Spalte verwendet, und der Rest wird als mehrere Y-Spalten verwendet.
- Alle im Skript verwendeten Funktionen sind im Skriptindex dokumentiert.Das Erlernen der verschiedenen Tools und Strukturen ermöglicht es Ihnen jedoch, Ihre unabhängig erstellten Skripte zu erstellen.
- Die Community-Diskussionsgruppe ist hier, um Ihnen zu helfen, wenn Sie Schwierigkeiten haben, eine Komponente in JSL zu verstehen
- Beispiele für Gebäudeanalysen, Diagramme usw. aus einer Tabelle mit dynamischen Eingabedaten sind in den Diskussionen auf der Community-Website verfügbar.Man muss sich die bereits veröffentlichten Diskussionen ansehen, um nach Lösungen zu suchen
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Betreff: JSL-Skript: Graph Builder zum Zeichnen aller Spalten einer DatentabelleHallo Jim,
Vielen Dank für die zeitnahe Antwort! Ihr Beitrag beschreibt genau, was das Skript tun soll. Nein, ich mache das nicht interaktiv. Das Diagramm muss mithilfe eines Skripts erstellt werden, sodass beim Ausführen des Skripts Folgendes angezeigt wird:
1. Öffnet eine Textdatei und lädt alle Daten in eine Datentabelle, speichert die Datentabelle (ich habe diesen Teil des Skripts bereits ohne Probleme abgeschlossen).
2. Erstellt ein einzelnes Diagramm aller Y-Datenspalten im Vergleich zu einer X-Datenspalte (hier brauche ich Hilfe).
Die Datendatei kann beliebig viele Y-Datenspalten (mit unterschiedlichen Namen) enthalten, es gibt jedoch immer nur eine X-Datenspalte. Das Loader-Skript, das ich bereits geschrieben habe, lädt alle Daten und benennt die Spalten.Ich weiß nicht im Voraus, wie viele Y-Datenspalten ich habe, bis die Datei in eine Datentabelle geladen wurde.
Ursprünglich dachte ich daran, eine Liste von Spalten an die Variable „Y“ im Diagrammersteller zu senden, aber ich bin mir nicht sicher, ob das möglich ist. Bin auch für andere Vorschläge offen, aber ich möchte die Datentabellenstruktur einer x-Datenspalte mit vielen y-Datenspalten beibehalten (dh ich möchte die Daten nicht stapeln).
-Dave
Betreff: JSL-Skript: Graph Builder zum Zeichnen aller Spalten einer DatentabelleWenn Sie den Graph Builder interaktiv ausführen, müssen Sie nur alle Spalten, die Sie grafisch darstellen möchten, greifen und in die Y-Drop-Zone ziehen, um mehrere Spalten als Y-Achse darzustellen.

Die JSL dafür finden Sie unten
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);