Poly-Seg-Zuordnung zu Datentabellen- / ZeilenzuständenGibt es eine Möglichkeit, Poly-Segs mit einer Datentabelle zu verknüpfen, wie Sie dies mit markerseg () tun können, so dass die Auswahl des Segments auch Zeilen markiert?
Zum Beispiel
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt_sum = dt << Summary(
Group( :sex ),
Freq( "None" ),
Weight( "None" )
);
dt_sum:sex << Set Labelled;
gb = graphbox();
fb = gb[framebox(1)];
new window("Test",
gb
);
fps = polyseg([70, 90, 90, 70], [30, 30, 10, 10]);
fb << append seg(fps);
mps = polyseg([10, 30, 30, 10], [30, 30, 10, 10]);
fb << append seg(mps);
ms = markerseg([80, 20], [50, 50], row states(dt_sum));
fb << append seg(ms);
//can I assign fps to row 1 and mps to row 2 so that when I click them
// they select in both tables (since the tables are linked)Re: Poly-Seg-Zuordnung zu Datentabellen- / ZeilenstatusOh cool! Ich habe sie benutzt, aber vergessen, dass es erlaubte Reihenzustände. Vielen Dank!
Re: Poly-Seg-Zuordnung zu Datentabellen- / ZeilenstatusIch habe herausgefunden, dass Shapeseg () mir erlaubt, wirklich den Zeilenstatus zuzuordnen, was ein wenig zu lernen brauchte, aber jetzt funktioniert es ziemlich gut.
Re: Poly-Seg-Zuordnung zu Datentabellen- / ZeilenstatusHoppla, ich habe vergessen, das Skript hinzuzufügen, um die Polygonzentren zu finden. Ich glaube, das ist eine JMP 14-Funktion. Wenn Sie sich also in einer früheren Version befinden, den ersten Punkt des Polygons verwenden, den Punkt extra klein machen und die Polygonlinienbreite 2 oder mehr, dann sollte der Punkt "unsichtbar" sein.
Hinweis: Ich erstelle den Punkt zuerst im Hintergrund. Wie Sie bemerkt haben, implementiert JMP alle Zeilenstatusmerkmale pro Punkt. Daher sind Auswahlmodi wie etwa ausgeblendet, wenn sie nicht ausgewählt sind, für Punkte sichtbar.
Diese Lösung ist nur unvollständig, da nur Farben mit der Tabelle synchronisiert werden können. Es wäre schön, diese Funktion für Kurven und Polygone zu haben. Es wäre auch schön, auf die mit jeder eingebauten Framebox verbundene Mausbox / Rückruf zuzugreifen oder auf ein Framebos zu verweisen und die Mousebox hinzuzufügen.
Re: Poly-Seg-Zuordnung zu Datentabellen- / ZeilenstatusVince,
Versuchen Sie das angehängte Skript. Es ist keine vollständige Lösung. Dieses Skript basiert auf dem Row-State-Handler, der offensichtlich in die Marker Segs integriert ist. Ohne die Markierungssegmente müsste dieses Skript einen Zeilenstatushandler für diese Anzeige hinzufügen. Die Handler-Funktion müsste ein Inval an die Framebox und das Aktualisierungsfenster senden, wenn sich der Zeilenstatus ändert.
Um dieses Skript zu erweitern, würde ich die Mitte des Polygons finden und ein Markierungsseg hinzufügen, damit das gesamte zusätzliche Skript vom vorhandenen JMP-Code verarbeitet wird.
Hoffe das hilft.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
dt_sum = dt << Summary(
Group( :sex ),
Freq( "None" ),
Weight( "None" )
);
dt_sum:sex << Set Labelled;
gb = graphbox();
fb = gb[framebox(1)];
new window("Test",
gb
);
mpolyseg = Function({xmat, ymat, states=[]},{i,scrp=Expr(Glue()), c, rs=0},
show(states);
if(
IsMatrix(states) & nrow(states)==0
| //or
IsList(states) & nitems(states) ==0,
states=J(nrow(xmat),1,0),
Type(states) == "Table",
rs=1
);
For(i=1, i<=nrow(xmat), i++,
If(rs,
c = Parse(EvalInsert("Color Of(As Row State((^states^<<GET row="" states=""></GET>Mit dieser Funktion können Sie auch feste Zustände oder Farben angeben.
Eine andere Methode wäre, einen Zeilenstatus-Handler zu erstellen, alle Fenster zu finden und alle Frameboxen (mit xpath) sowie alle diese Fenster zu finden.