Wie ändere ich Legendennamen in JSL (in Graph Builder)?Ich erhalte viele Daten in einer CSV-Datei (viele Spalten, viele Zeilen) und arbeite an einer Basisvorlage in JSL, um die Generierung von Diagrammen zu standardisieren. (Neuskalierung der Achsen, Umbenennen der Achsen, Standardisierung der Linienfarbe usw.) Im Durchschnitt kann ich eine CSV-Datei pro Tag erhalten, daher möchte ich die Daten in eine JMP-Datentabelle einfügen, das Skript ausführen und die Diagrammausgabe vollständig automatisieren lassen.
Meine JMP-Datei enthält standardmäßig die Tag-Namen als Spaltenüberschriften, die als Diagrammlegende überhaupt nicht aussagekräftig sind. Eine Möglichkeit wäre, alle Spalten umzubenennen, aber ich würde es vorziehen, die Tag-Namen beizubehalten und daher den Text direkt in den Legendeneinstellungen zu bearbeiten. (Aber mit JSL gemacht, nicht manuell.)
Ich kann problemlos auf das Legendenfeld zugreifen, zum Beispiel:
gbR = gb << Report; // gbR << Show Tree Structure;
s = gbR[legendbox(1)];
s << Set Title("new title");Im beigefügten PNG sehen Sie die Idee.
Ich stecke jetzt fest, wie ich auf den Text im Legendenfeld zugreifen soll (mit Ausnahme des Titels), damit ich ihn mithilfe von JSL manipulieren und ändern kann.
Ich sehe, dass das vom Graph Builder generierte Skript von „Legendenmodell“ und „Ebenenname“ spricht, aber ich hatte bei den zahlreichen Dingen, die ich versucht habe, keinen Erfolg.
Für Hinweise hierzu wäre ich sehr dankbar.
Wie gesagt, wie kann ich mit JSL auf den Legendentext zugreifen, um ihn von der Standardeinstellung zu ändern?
Danke.
MassenanpassungBetreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Möge dies Brute-Force-Skript aus @txnelson könnte Ihnen helfen, etwas Ähnliches für den Text des Level-Elements zu tun. Das Skript in diesem Thread spricht davon, bestimmte Legendenelemente nicht anzuzeigen, aber Sie könnten eine ähnliche Strategie innerhalb des Ausdrucks für die Levelelemente verwenden.
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Ich denke, Sie müssen dies genau so machen (mit Ausdrücken), wenn Sie es mit Skripten machen wollen. Möglicherweise möchten Sie das Skript des Diagramms speichern, die Eingabe des Ebenennamens zwischen den Klammern analysieren und diese extrahieren und ersetzen. Füllen Sie dann das geänderte Skript erneut aus bzw. führen Sie es erneut aus. Auf diese Weise können Sie über ein sehr allgemeines Skript verfügen, das auf Änderungen reagiert, anstatt es jedes Mal manuell für jedes Szenario zu definieren. Allerdings ist es noch mehr Arbeit.
Es scheint, dass die verfügbaren Legendeneigenschaften den Text nicht als Eigenschaft haben:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
r = Report( gb )[LegendBox( 1 )];
r << get properties();
/*
["Background Color" => 2147483647,
"Border" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Enabled" => 1,
"Horizontal Alignment" => "Default",
"Margin" => {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}, "Padding" => {Left( 0 ),
Top( 0 ), Right( 0 ), Bottom( 0 )}, "Text Color" => 2147483647,
"Vertical Alignment" => "Default",
"Visibility" => "Visible"]
*/
Und wenn Sie verwenden
r << legend settings
Sie erhalten ein Fenster, das alle Aktionen in JMP blockiert, bis Sie auf die Schaltfläche „OK/Abbrechen“ klicken. Daher können Sie nicht auf den inneren Teil dieses Fensters zugreifen. Was meine Zweifel noch verstärkt, dass dies möglich ist, ist, dass die Baumstruktur der Legende immer noch „Mean(...)“ anzeigt, egal ob man das manuell geändert hat oder nicht. Es scheint also, dass über dem ursprünglichen Etikett etwas versteckt ist. Oder aus irgendeinem anderen Grund ...
Bitte fügen Sie eine hinzu Wunschzettel Kommentar, sodass das Ändern des Legendentextes mit JSL änderbar ist. Darüber hinaus möchten Sie es möglicherweise auch an den technischen Support senden ( support@jmp.com ). Bitte vergessen Sie nicht, den Grund dafür zu begründen, da dies die Chance auf eine höhere Priorität erhöht. Danke
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Es tut mir Leid. Das ist eine neue Funktion in JMP 16. Ich wusste nicht, dass es gerade erst hinzugefügt wurde und in JMP 15 nicht verfügbar war. Sie müssen die erste Methode ausprobieren, bis JMP 16 verfügbar ist. Ich entschuldige mich noch einmal für die Fehlinformation.
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Lieber Paul,
Im angehängten PNG sehen Sie die Ausgabe des Graph Builders, die ich beim Ausführen der Syntax mit und ohne bekomme
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");Ich sehe keinen Unterschied im Text zur Legende. Ich folge der Logik Ihrer Syntax, sehe aber keine Auswirkung daraus.
Im zweiten PNG sehen Sie, was ich nach der Ausführung Ihrer vollständigen Syntax erwartet habe.
Wenn Sie sich noch einmal damit befassen und mir einen Weg mitteilen könnten, wäre ich Ihnen sehr dankbar. Danke, Scott.
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Dies ist eine weitere Möglichkeit:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) )
);
lgnd = gb << Get Legend Display;
item1 = lgnd << Get Item( 4, 1 );
item1 << Set Label("Line 1");
item2 = lgnd << Get Item( 4, 2 );
item2 << Set Label("Line 2");
Die erste Zahl in Get Item ist der Wert aus dem Legend-Parameter im Graph Builder. Die zweite Zahl wird der Index dieser Legende sein. Manchmal kann es schwierig sein, diese Zahlen richtig zu ermitteln, da wir nicht immer alle Legenden anzeigen. Wenn Sie die vollständige Liste der Legenden sehen möchten, gehen Sie zu den Legendeneinstellungen.
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Danke. Ja, sicherlich möglich. Ich schätze, ich bräuchte eine Variable, um den gewünschten Namen für den Legendentext zu erfassen, da ich verschiedene Diagramme im Sinn habe?
Beispielsweise gemäß der Graph Builder-Beispielsyntax:
_Legend1 = "abcd";
_Legend2 = "efgh";
Wenn ja, müsste ich Folgendes verwenden, um die Verwendung einer Variablen zu verwalten?
Eval(
Substitute(
Expr(
Ist diese Option schließlich wahrscheinlich die einzige Möglichkeit, eine „direktere“ Manipulation des Legendentextes zu erreichen?
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Wäre es möglich, in Ihren Graph Builder-Skripten so etwas zu tun:
Graph Builder(
Variables( X( :age ), Y( :height ), Y( :weight, Position( 1 ) ) ),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Level Name( 0, "abcd", Item ID( "Mean(height)", 1 ) ),
Level Name( 1, "efgh", Item ID( "Mean(weight)", 1 ) )
)}
),
Dispatch( {}, "400", LegendBox, {Set Title( "My Title" )} )
)
);Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Vielen Dank für die Bestätigung, dass ich nichts Offensichtliches übersehen habe.
Leider sehe ich nicht (oder kann es nicht erkennen), wie „Value Labels“ das erreichen können, was ich erreichen möchte. Mein Ziel besteht in gewisser Weise darin, den Spaltennamen effektiv zu ändern, und nicht darin, die Datenwerte zu manipulieren, die in den Zeilen unter dem Spaltentitel gefunden werden.
Wenn ich eine einfache Tabelle mit ein paar Werten im Text erstelle, ändert sich die Legende, wenn ich „Name festlegen“ für eine bestimmte Spalte verwende, zum Beispiel „Spalte(dt, 1) << Name festlegen(“Neuer Name“);“ Diese eine Syntaxzeile führt dazu, dass der Text für die Daten von Spalte 1 aktualisiert wird und zu „Neuer Name“ wird.
Das Diagramm meiner tatsächlichen Daten enthält Legendentexte vom Typ „Mean(…Tag Name…)“. Wenn ich << Name festlegen mit meinen tatsächlichen Daten verwende, habe ich immer noch einen problematischen Legendentext, da dieser „Mittelwert(… Spaltenname …)“ enthält.
Es wäre hilfreich zu wissen, wie man den Legendentext für eine bestimmte Spalte manipulieren kann. Vielleicht erstelle ich einfach eine Legende von Grund auf, damit alle Eigenschaften in einer solchen „selbst erstellten“ Legende zugänglich und manipulierbar sind. Ich möchte, dass es ein Skript ist und nicht jedes Mal, wenn ich ein neues Diagramm erstelle (wahrscheinlich täglich), manuelle Aufmerksamkeit erfordert.
Betreff: Wie ändere ich Legendennamen in JSL (in Graph Builder)?Die Details im Skriptindex für eine Legend Box() zeigen keine Meldung an, die das Ändern der tatsächlichen Beschriftungen in einer Legende ermöglicht. Da die Werte in der Legende jedoch direkt von den Werten in der Datentabelle stammen, können Sie einfach entweder die Werte in der Datentabelle ändern/neu codieren oder die Spalteneigenschaft „Wertbeschriftungen“ festlegen.