Hallo,
Ich suche nach einer Methode, um Legendenelemente im Graph Builder konsistent anzusprechen und zu ändern.
Nachdem ich Variablen hinzugefügt habe, um das Basisdiagramm zu generieren, verwende ich die Dispatch-Anweisungen, um den Linienstil/die Farbe/Größe zu ändern.
Das Problem, auf das ich stoße, ist, dass sich der Legendentext (oder die Element-IDs) abhängig davon ändern, welche Zeilen ich in die Datentabelle ein-/ausgeschlossen habe, und daher funktioniert die Dispatch-Anweisung für einige Auswahlmöglichkeiten, für andere jedoch nicht.
Beispiel:
LHS, ich habe mehrere Zeilen pro x-Kategorie (JahrMonat). Der Legendentext hat das Format „Mean(ColumnName)“ | RHS, mit ausgeschlossenen Zeilen habe ich nur eine einzel Zeile pro x-Kategorie. Der Legendentext hat das Format „Spaltenname“. |
 |  |
Um die Legendenelemente zu ändern, verwende ich die Legend Model (...)-Anweisung wie unten, wobei Item ID( "Mean(Yield_A)", 1 ) das zu ändernde Element identifiziert.
gb << send to report (
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 15,
Level Name( 0, "Yield_A", Item ID( "Mean(Yield_A)", 1 ) ),
Properties( 0, {Line Color( "red" ), Line Width( 6 )}, Item ID( "Mean(Yield_A)", 1 ) ),
)
}
));Ich verwende einen Datentabellenfilter, um Zeilen einzuschließen/auszuschließen und das Diagramm auf ein einzelnes Segment oder Produkt einzugrenzen.
Beim Filtern auf ein einzelnes Produkt gibt es eine einzelne Zeile pro JahrMonat und der Legendentext ändert sich wie im obigen RHS-Diagramm hervorgehoben.
Die ursprüngliche Artikel-ID („Mean(Yield_A)“, 1 ), die in der Dispatch-Anweisung verwendet wurde, findet keinen passenden Artikel (der Spaltenname ist nicht mehr in „mean()“ eingeschlossen).
Eine Problemumgehung besteht darin, die Legendenmodell()-Anweisung(en) zu duplizieren, um den Legendentext mit dem Format „Spaltenname“ abzuzielen, z. B. Artikel-ID( „Ertrag_A“, 1 )
Das funktioniert, ist aber umständlich.
Fragen:
- Gibt es eine alternative/bessere Methode zur Ausrichtung auf die Legendenelemente, die in beiden oben genannten Fällen funktioniert?
- Gibt es eine eigenständige Dokumentation für die legend model()-Anweisung oder ihre Komponenten (ich konnte sie nicht finden)?
Ein letzter Gedanke... Ich gehe davon aus, dass, wenn es nur eine einzelne Zeile/einen einzelnen Wert für jede ColumnName)", auch wenn es nur einen einzigen Wert gibt? Schließlich ist die zusammenfassende Statistik für das Linienelement immer noch auf „Mittelwert“ eingestellt.
Danke,
Strahl
Ich habe das Obige als Lösung akzeptiert, aber es funktioniert nur für JMP16. Also immer noch offen für andere Vorschläge/Optionen, die mit JMP15 funktionieren könnten. Danke
Es sieht aus wie Legendenserver ist eine JMP16-Ergänzung.
Obwohl ich JMP16 installiert habe, verwenden die meisten meiner Organisationen immer noch JMP14 oder JMP15.
Ich erstelle eine JMP-GUI, um sie mit dem Team zu teilen, daher muss ich vorerst bei JMP15 bleiben.
@jthi – Vielen Dank für die Beiträge – ich werde dies auf jeden Fall in Zukunft verwenden (nur derzeit nicht).
Überprüfen Sie den Skriptindex für Legend Server. Damit können Sie zumindest Legendenbezeichnungen ändern (die Dokumentation für Legend Server ist jedoch ziemlich schlecht).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Variables(X(:height), Y(:weight), Overlay(:sex), Color(:age)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
server = gb << Get Legend Server;
items = server << Get Legend Items;
For Each({item, index}, items[1], item << Set Label("Item " || Char(index)));