JSL – X- und Y-Werte offener Diagramme abrufenHallo
Ich habe ein Skript, mit dem ich in einem Kombinationsfeld jede geöffnete Datentabelle auswählen kann

Wenn ich eine Datentabelle habe, unter der sich Diagramme befinden
Wie kann ich diese Grafiken auswählen?
Der Grund dafür ist, dass ich die Namen ihrer X- und Y-Spalten erhalten möchte
Zum Beispiel möchte ich im ersten Diagramm, das im Bild oben markiert ist, test und test2 erhalten

Diese Diagramme sind bereits in JMP geöffnet und ich habe keine Kontrolle über sie (hinsichtlich der Bearbeitung des Skripts, das sie erstellt).
DatenzugriffMassenanpassungBetreff: JSL – X- und Y-Werte offener Diagramme abrufenHier ist ein Ansatz, der das von der Plattform (in diesem Fall Graph Builder) geschriebene JSL verwendet, um die Elemente zu finden. Ich füge es ein, um Folgendes zu veranschaulichen:
- Ausdruck ( )
- Namensausdruck ( )
- arg ( )
- Kopf ( )
- << Skriptfähiges Objekt abrufen (dies gibt das Graph Builder-Objekt zurück, von dem Sie das Skript erhalten)
Wenn Sie sie noch nicht verwendet haben, sollten Sie diese im Skript-Handbuch nachlesen. Sie sind mächtig, erfordern aber etwas Übung.
Da ich keine Bedingungen eingegeben habe (Sie würden das tun wollen ... Fensternamen überprüfen usw.), gehen Sie wie folgt vor, um sicherzustellen, dass das Skript wie unten beschrieben funktioniert.
1) Aktuelle Berichte und Diagramme schließen.
2) Erstellen Sie ein Graph Builder-Diagramm.
3) Führen Sie das folgende Skript in einem Skriptfenster aus. (Sie können dies auch in eine externe Schleife einschließen, um durch mehr als ein Diagrammfenster zu blättern. Auch dies ist nur ein grobes Skript, das die Gesamtidee veranschaulichen soll.)
Prost,
Brady
</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
winList = Get Window List( Type( "reports" ) );
obj = winlist[1][Outline Box( 1 )] << Get Scriptable Object;
script = obj << get script;
i = 1;
//move through the script's arguments until you get to the Variables ( ) argument.
While( Head( exp = Arg( Name Expr( script ), i ) ) != Expr( Variables ), i++ );
xList = ylist = {};
nexp = name expr ( exp ); //optional; this allows us to type nexp instead of name expr ( exp ) in the code below.
//cycle through the arguments in the Variables ( ) section. If X ( ) or Y ( ) is
//encountered, insert into the appropriate list.
For( i = 1, i <= N Arg( nexp ), i++,
If( Head( var = Arg( nexp, i ) ) == Expr( X ), Insert Into( xList, Arg( Name Expr( var ), 1 ) ));
If( Head( var = Arg( nexp, i ) ) == Expr( Y ), Insert Into( yList, Arg( Name Expr( var ), 1 ) ));
);
Show( xList, yList );
Betreff: JSL – X- und Y-Werte offener Diagramme abrufendanke für die Hilfe
Ich möchte jetzt die XY-Werte abrufen (was rot markiert ist), bin mir aber nicht sicher, wie ich auf diesen Wert zugreifen soll
Alles, was ich tun kann, ist, den Titel zu bekommen (was gelb markiert ist).
Ich habe festgestellt, dass ich mit „get XML“ anstelle von „get Text“ auch die Namen bekomme, aber es gibt dort VIELE Daten und ich hoffe, es gibt einen einfacheren Weg

Betreff: JSL – X- und Y-Werte offener Diagramme abrufenDa Sie vor der Ausführung des Codes, den Sie schreiben möchten, keine Kontrolle über die JMP-Sitzung hatten, könnten Sie diesen Ansatz ausprobieren:
NamesDefaultToHere(1);
tableOfInterest = "Big Class";
allWindows = GetWindowList();
tableWindows = {};
for (w = 1, w <= NItems(allWindows), w++,
winTitle = allWindows[w] << GetWindowTitle;
if (StartsWith(winTitle,tableOfInterest) & (allWindows[w] << WindowClassName) == "Report", InsertInto(tableWindows, allWindows[w]));
);
for (w = 1, w <= NItems(tableWindows), w++,
Print(tableWindows[w] << GetWindowTitle);
);
Verwenden Sie „Hilfe > Skriptindex“, um zu sehen, wie die verschiedenen Befehle funktionieren.
Sobald Sie die Liste der untergeordneten Berichte haben, können Sie jeden einzelnen überprüfen und heraussuchen, was Sie möchten. Bedenken Sie jedoch, dass die Berichtsbäume komplex sein können, sodass möglicherweise einige Arbeit erforderlich ist, um sie ausreichend robust zu machen.