So erhalten Sie Legendenfeldinformationen wie Farbe und MarkierungstypLiebe JMP-Community,
(W10 Enterprise 64-Bit, JMP Pro 15.0)
Ich habe einen Benutzer, der den Graph Builder verwendet, um ein ziemlich komplexes Diagramm zu erstellen, das mehrere Informationsbits enthält. Die Marktdaten werden nach Region, Kunde usw. aufgeteilt. Daher ist das Streudiagramm farblich gekennzeichnet und verfügt über mehrere Markierungen. Als Beispiel sehen Sie unten, wie das Diagramm ungefähr 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 aus der Legende den Markierungsstil und die Farbe zu extrahieren und diese als dt-Eigenschaften festzulegen. Der Zweck besteht darin, dass der Benutzer einen Teil des JSL-Codes als Hot-Button in seiner Symbolleiste ausführen kann, um die Markierungen und Farben für die Daten festzulegen. Der Grund dafür ist, dass sich die Farbcodierung und Markierungen für die Kundengruppe ändern, wenn der Benutzer innerhalb von Graph Builder den Datenfilter zum Ändern von Regionen verwendet, 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 abzurufen, aber ich erhalte als Ergebnis der Zeile null: 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 vorliegen, ist das in Ordnung, es muss kein Name wie „blau“ oder „rot“ sein.
Für Vorschläge zum weiteren Vorgehen sind wir sehr dankbar.
Danke,
DS
Betreff: So erhalten Sie Informationen zur Legendenbox, z. B. Farbe und MarkierungstypHallo @MJE ,
Vielen Dank für das zusätzliche Feedback. Es klappt! Danke für die Lösung, ich werde sie als solche markieren. Ich habe es nur geringfügig geändert, um den Anforderungen des Benutzers besser zu entsprechen, aber ansonsten erfüllt es seinen Zweck. Soweit ich weiß, ist die Liste der Markierungen und Farben in derselben 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, die ich bekomme:
MarkerList = {"Circle", "Plus", "Diamond", "X", "Triangle", "Y"};
ColorList = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

Danke!,
DS
Betreff: So erhalten Sie Informationen zur Legendenbox, z. B. Farbe und MarkierungstypVielleicht hilft Ihnen dieser Teil hier weiter. Zumindest erhalten Sie damit einige Informationen darüber, welcher tatsächliche Datenpunkt im Diagramm welche Farbe und Markierung hat. Leider konnte ich keine Möglichkeit finden, die Datenpunkte (bzw. das Markierungssegment) direkt mit den tatsächlichen Zeilennummern zu korrelieren. Vielleicht hat jemand anderes eine Idee, wie man das machen kann ...
Die Meldung „Get Marker“ kann durch „Get Markers“ ersetzt werden, um Ihnen eine Liste der verwendeten Marker in diesem Marker-Segment anzuzeigen. 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 Informationen zur Legendenbox, z. B. Farbe und MarkierungstypHallo @MJE ,
Danke für die Rückmeldung. Leider ist es nicht ganz das, woran ich interessiert bin. Der Benutzer hat den Zeilenstatus oder die Markierung nicht wirklich geändert, sondern lässt Graph Builder dies automatisch tun. Aber jedes Mal, wenn eine Änderung vorgenommen wird, ändern sich die Farben und Markierungen gemäß den Standardeinstellungen von JMP. Ich möchte die Markierungs- und Farbeinstellungen extrahieren, die Graph Builder automatisch vornimmt, und diese dann auf das dt anwenden, damit es behoben ist und nicht aktualisiert wird, wenn eine Änderung an Graph Builder vorgenommen wird. Ich möchte dies automatisch tun, um es dem Benutzer zu erleichtern.
Ich denke, es ist etwas, das dem MarkerSeg und <<
Ich lese gerade etwas darüber und versuche, die Beispiele im Skriptindex zu ändern, indem ich den unten stehenden geänderten Code 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 im ursprünglichen Beitrag eingefügt habe, geht hervor, dass jeder Datenpunkt KEIN „Punkt“ ist.
Danke!,
DS
Betreff: So erhalten Sie Legendenfeldinformationen wie Farbe und MarkierungstypHallo @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
ermöglicht es Ihnen, Zeilenstatusinformationen (wie Farbe, Markierung usw.) in eine separate Spalte und wieder zurück in die Zeilenstatus zu übertragen (Beispiele und Syntax finden Sie im Skriptindex).
br
Malte