So erhalten Sie Legend Box-Informationen wie Farbe und MarkierungstypLiebe JMP-Community,
(W10 Enterprise 64-Bit, JMP Pro 15.0)
Ich habe einen Benutzer, der Graph Builder verwendet, um ein ziemlich komplexes Diagramm zu erstellen, das mehrere Informationsbits enthält. Die Marktdaten werden nach Region, Kunde usw. aufgeteilt. Als Ergebnis ist das Streudiagramm farbcodiert und weist mehrere Markierungen auf. Als Beispiel sehen Sie unten eine Art Diagramm, wie es aussehen könnte (unter Verwendung von Big Class Families.jmp).

Was ich tun möchte, ist, seine ursprünglichen Graph Builder-Plots zu nehmen und den Markerstil und die Farbe aus der Legende zu extrahieren und diese als dt-Eigenschaften festzulegen. Der Zweck besteht darin, dass der Benutzer ein bisschen JSL-Code als Hot-Button in seiner Symbolleiste ausführen kann, der die Markierungen und Farben für die Daten korrigiert. Der Grund dafür ist, dass sich innerhalb von Graph Builder immer dann, wenn der Benutzer den Datenfilter verwendet, um Regionen zu ändern, die Farbcodierung und die Markierungen für die Gruppe von Kunden ändern, da sich die Anzahl der Kunden innerhalb jeder Region ändert. Sie möchten dies beispielsweise als feste Eigenschaft der Datenspalte haben.
Ich habe ein bisschen JSL-Code wie diesen ausprobiert, um die Informationen aus der LegendBox(1) innerhalb der Baumstruktur zu erhalten, aber ich bekomme null als Ergebnis der Zeile: test = legend<
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>Wenn die Farbinformationen in RGB oder was auch immer sind, ist das in Ordnung, es muss kein Name wie "blau" oder "rot" sein.
Alle Vorschläge zum weiteren Vorgehen sind sehr willkommen.
Vielen Dank,
DS
Betreff: So erhalten Sie Legend Box-Informationen wie Farbe und MarkierungstypHi @MJE ,
Danke für das zusätzliche Feedback. Es klappt! Danke für die Lösung, ich werde es als solche markieren. Ich habe es nur geringfügig geändert, um eher dem zu entsprechen, wonach der Benutzer fragt, aber ansonsten erfüllt es den Zweck. Soweit ich das beurteilen kann, ist die Liste der Markierungen und Farben in der gleichen Reihenfolge wie die Legende.
Hier ist die modifizierte Version Ihres Codes, den ich verwendet habe:
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
Und die Ausgabe bekomme ich:
MarkerList = {"Kreis", "Plus", "Diamant", "X", "Dreieck", "Y"};
Farbliste = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

Vielen Dank!,
DS
Betreff: So erhalten Sie Legend Box-Informationen wie Farbe und MarkierungstypVielleicht hilft dir dieser Teil hier weiter. Zumindest gibt es Ihnen einige Informationen darüber, welcher aktuelle Datenpunkt in der Grafik welche Farbe und Markierung hat. Leider konnte ich keinen Weg finden, die Datenpunkte (bzw. das Markierungssegment) direkt mit den tatsächlichen Zeilennummern zu korrelieren. Vielleicht hat noch jemand eine Idee, wie das geht...
Die Meldung "Marker abrufen" kann durch "Marker abrufen" ersetzt werden, um Ihnen eine Liste der verwendeten Marker innerhalb dieses Markersegments zu geben. Da sie in diesem Zustand aber alle gleich sind, habe ich sie zur besseren Lesbarkeit gekürzt.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
Hoffe das hilft.
Br
Malte
Betreff: So erhalten Sie Legend Box-Informationen wie Farbe und MarkierungstypHi @MJE ,
Danke für die Rückmeldung. Leider ist es nicht ganz das, was mich interessiert. Der Benutzer hat den Zeilenstatus oder die Markierung nicht wirklich geändert, er lässt Graph Builder dies automatisch tun. Aber jedes Mal, wenn eine Änderung vorgenommen wird, ändern sich die Farben und Markierungen gemäß den JMP-Standardeinstellungen. Ich möchte die Marker- und Farb-"Einstellungen" extrahieren, die Graph Builder automatisch vornimmt, und diese dann auf das dt anwenden, damit es behoben ist und nicht aktualisiert wird, wenn eine Änderung am Graph Builder vorgenommen wird. Ich möchte dies zur Vereinfachung für den Benutzer automatisch tun.
Ich denke, es ist etwas näher an MarkerSeg und <<
Ich lese jetzt etwas darüber und versuche, die Beispiele im Scripting-Index zu ändern, indem ich den modifizierten Code unten verwende.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
Aber wenn ich es ausführe, erhalte ich die folgende Ausgabe für markerseg: {"Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot"}
Aus der Grafik, die ich in den ursprünglichen Beitrag eingefügt habe, ist jeder Datenpunkt KEIN "Punkt".
Vielen Dank!,
DS
Betreff: So erhalten Sie Legend Box-Informationen wie Farbe und MarkierungstypHi @SDF1 ,
Wenn ich Ihr Problem richtig verstanden habe, möchten Sie vielleicht die Zeilenzustände überprüfen.
<< copy from row states
und
<< copy to row states
erlaubt Ihnen, Zeilenstatusinformationen (wie Farbe, Markierung, etc.) in eine separate Spalte und wieder zurück in die Zeilenstatus zu übertragen (Beispiele und Syntax finden Sie im Scripting-Index).
Br
Malte