JSL: So erstellen Sie ein Skript für eine Diagrammaktualisierung mit Kombinationsfeld und Schaltflächen „Weiter/Zurück“.Hallo alle,
Ich arbeite an einem größeren Satz von JSL-Code und bin daran interessiert, ihm einige Funktionen hinzuzufügen, damit der Benutzer durch verschiedene Ansichten blättern kann - so etwas wie das, was man tun kann, wenn man durch die verschiedenen Komponenten in der PCA-Plattform blättert, siehe Bildschirm unten geschossen.

Ich weiß, dass ich ein paar Kombinationsfelder mit den relevanten Spalten aus der Datentabelle benötige, aber ich bin mir nicht sicher, wie ich das Diagramm wie in der PCA-Plattform automatisch aktualisieren oder wie ich das Feld „Weiter“ richtig aufrufen soll. Ich möchte auch ein Feld mit der Schaltfläche „Zurück“ hinzufügen, damit der Benutzer einfacher in der Ansicht zurückgehen kann.
Wenn jemand Vorschläge oder Ideen zur Umsetzung hat, würde ich mich über Hilfe freuen. Ich habe nicht erfolgreich nach dieser Funktionalität gesucht oder im Scripting Index oder Scripting Guide, die ich habe, viel darüber gefunden.
Vielen Dank!,
DS
UPDATE: Ich komme näher und habe einen Code, der die Liste im Kombinationsfeld durchläuft, das ist also ziemlich einfach (siehe unten). Womit ich immer noch Probleme habe, ist, dass die Grafik automatisch aktualisiert wird. Wenn der Benutzer auf „Next“ oder „Prev“ klickt, ändert sich die y-Variable automatisch im Diagramm. Übrigens verwende ich die Boston Housing.jmp-Datei, um es auszuprobieren.
Names Default To Here( 1 );
dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
nw = New Window( "interactive Graph builder", V List Box( vlb1 = V List Box(), vlb2 = V List Box() ) );
xcol = 1;
ycol = 2;
lbcontent = V List Box(
Lineup Box( N Col( 5 ),
Text Box( "Select Params", <<SET font="" size=""></SET>
SkripterstellungBetreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetHallo, ich suche weitere Hilfe zu diesem Thema?
Ich versuche, nur eine bestimmte Anzahl von Spalten auf meiner xlist anzuzeigen, anstatt alle Spalten, die in beliebiger Reihenfolge angeordnet sind
xlist= {"crim", "nox", "radial"};
Mit dem obigen Skript werden nur die ersten 3 Spalten gezeichnet, die in diesem Fall "crim", "zn" und "indus" sind und nicht die, die ich oben erwähnt habe.
Gibt es eine Problemumgehung dafür?
Vielen Dank.
Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetUpdate: OK, also musste ich etwas mehr in meinem Scripting Guide über Append, Prepend, Sib Append und Sib Prepend lesen. Nachdem ich dies gelesen hatte, ging es darum, zu bestimmen, welcher Containerbox ich das aktualisierte Diagramm voranstellen musste. Wenn Sie also andere Container-Boxen in einem Fenster haben möchten, müssen Sie möglicherweise den Befehl Sib Prepend() verwenden. Macht Sinn, jetzt wo ich es sehe.
Das beigefügte JSL macht alles, was ich beabsichtigt habe, falls jemand interessiert ist.
Vielen Dank!,
DS
Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetHi @ian_jmp ,
Ich hoffe, Sie können mir dabei helfen, dieses Skript richtig zum Laufen zu bringen, wenn ich mehr Elemente im neuen Fenster habe. Ich war in der Lage, mein eigenständig funktionierendes Konzeptskript in ein größeres Skript zu verschieben, das die Daten partitioniert und die Ergebnisse anzeigt. Ich hänge meinen JSL-Code als Datei an, das könnte so einfacher sein. Es öffnet das Boston Housing und Sie können die Datentabelle und dann X-Faktoren und Y-Antwort auswählen und einen Validierungsteil und die maximale Anzahl der zu versuchenden Splits festlegen.
Der Code funktioniert, um die gewünschte Ausgabe zu generieren (unten):

Aber wenn Sie durch die Parameter blättern, wird das Layout des Fensters wie folgt neu angeordnet:

Ich möchte das gleiche Layout wie im ersten Screenshot beibehalten, aber die Optionen Prepend und Append behalten nicht das richtige Layout bei. Jede Hilfe wird sehr geschätzt.
Vielen Dank!,
DS
Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetHi @ian_jmp ,
Das hat genau gewirkt, danke! Ich werde den funktionierenden Code unten posten und ihn als Lösung markieren, da dieser Code genau das tut, was ich beabsichtigt hatte, als ich mit der Arbeit an diesem Teil begann.
Vielen Dank!,
DS
Aktualisierter Code mit Prepend statt Append.
Names Default To Here( 1 );
dt = Open("$sample_data/Boston housing.jmp");
//dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
gb_default = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, 1 ) ), Y( Column( dt, 2 ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
gb_change = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, xcol ) ), Y( Column( dt, ycol ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
nw = New Window( "Interactive Graph",
gb = gb_default;
lbcontent = Lineup Box( N Col( 5 ),
Spacer Box( Size( 1, 0 ) ),
Text Box( "X", <<JUSTIFY text=""></JUSTIFY>Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetProbieren Sie 'Prepend' statt 'Append' aus.
Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetHallo alle,
Also, ich war in der Lage, einen früheren Diskussionsthread zu finden hier wo @Frau einem anderen Benutzer geholfen, etwas Ähnliches zu tun. Ich war in der Lage, diese Idee abzuarbeiten und sie so zu modifizieren, dass sie mehr oder weniger so funktioniert, wie ich es beabsichtige. unten ist der Code, der diese Funktionalität ermöglicht, mit Ausnahme eines kleinen "Fehlers".
Der Code ermöglicht es dem Benutzer, die X-, Y-Elemente auszuwählen, die grafisch dargestellt werden sollen, und aktualisiert das Diagramm, wenn die Combo-Boxen geändert werden oder wenn die Zurück/Weiter-Schaltflächen gedrückt werden. In dieser Hinsicht funktioniert der Code also wie beabsichtigt.
Nachdem Sie eine Änderung vorgenommen haben, um etwas anderes zu zeichnen, tauscht das Inhaltsfeld des Diagrammerstellers die Positionen mit dem Auswahlfeld Lineup, das die Kombinationsfelder/Schaltflächenfelder enthält. Ich möchte das Lineup-Feld, das die Optionen zum Ändern des Diagramms enthält, am unteren Rand des Fensters behalten und bin mir nicht sicher, wie ich das machen soll.
Alle Vorschläge, wie dies funktioniert, sind sehr willkommen! (Code am Ende).
Vielen Dank!,
DS
Startfenster (mit Option unten):

Aktualisiertes Fenster, nachdem eine Änderung an den X- oder Y-Kombinationsfeldern oder den Schaltflächen Zurück/Weiter vorgenommen wurde:

Hier ist der Code:
Names Default To Here( 1 );
//dt = open("$sample_data\Boston Housing.jmp");//In case the file isn't already open.<BR />
dt = Data Table( "Boston Housing" );
xlist = dt << Get Column Names( String );
gb_default = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, 1 ) ), Y( Column( dt, 2 ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
gb_change = Expr(
Graph builder( Show Control Panel( 0 ), Variables( X( Column( dt, xcol ) ), Y( Column( dt, ycol ) ) ), Elements( Points( X, Y, Legend( 3 ) ) ) )
);
nw = New Window( "Interactive Graph",
gb = gb_default;
lbcontent = Lineup Box( N Col( 5 ),
Spacer Box( Size( 1, 0 ) ),
Text Box( "X", <<JUSTIFY text=""></JUSTIFY>Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetHi @DonMcCormack ,
Ja, das würde sicher funktionieren, aber ich möchte eine automatische Aktualisierung des Diagramms, wenn der Benutzer auf die Schaltflächen Next/Prev klickt oder einen anderen Satz von Variablen aus dem Kombinationsfeld auswählt. Im Wesentlichen versuche ich, die Funktionalität der PCA-Plattform neu zu erstellen, sie jedoch für die Integration in andere Skripte zu verallgemeinern.
DS
Betreff: JSL: Wie man ein Graph-Update mit Combo-Box und Next/Prev-Buttons skriptetWarum nicht den Column Switcher verwenden?