Associazione Poly Seg con stati tabella / riga datiC'è un modo per associare poly segs con una tabella di dati come è possibile con markerseg () in modo che la selezione del segmento evidenzi anche le righe?
Per esempio
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)Ri: Associazione di segmenti Poly con stati tabella / riga datiOh bello! Li ho usati, ma ho dimenticato che permetteva gli stati delle righe. Grazie!
Ri: Associazione di segmenti Poly con stati tabella / riga datiHo trovato che shapeseg () mi permette di mappare veramente gli stati di riga che hanno impiegato un po 'per imparare a usare, ma ora funziona abbastanza bene.
Ri: Associazione di segmenti Poly con stati tabella / riga datiOops, ho dimenticato di aggiungere lo script per trovare i centri poligono. Credo che sia una funzione JMP 14. Quindi, se sei su una versione precedente, usando il 1o punto nel poligono, rendendo il punto extra piccolo e la larghezza della linea poligonale 2 o più, il punto dovrebbe essere "invisibile".
Nota Creo il punto per primo in modo che sia sullo sfondo. Come hai notato che JMP implementa completamente, tutte le caratteristiche dello stato di riga per punto. Quindi le modalità di selezione come sbiadite quando non selezionate sono visibili per i punti.
Questa soluzione è solo parziale in quanto consente solo ai colori di sincronizzarsi con la tabella. Sarebbe bello avere questa caratteristica per curve e poligoni. Sarebbe anche bello poter accedere al mousebox / callback associato a ciascun framebox incorporato, oppure fare riferimento a un framebos e aggiungere il mousebox.
Ri: Associazione di segmenti Poly con stati tabella / riga datiVince,
Prova lo script allegato. Non è una soluzione completa. Questo script si basa sul gestore di stato delle righe, ovviamente integrato dai Marker Seg. Senza il marcatore segs, questo script avrebbe bisogno di aggiungere un gestore di stato di riga con scope a questo display. La funzione del gestore deve inviare un Inval alla framebox e alla finestra di aggiornamento quando viene modificato uno stato di riga.
Per estendere questo script, troverei il centro del poligono e aggiungere un markerseg in modo che tutti gli script aggiuntivi venissero gestiti dal codice incorporato JMP esistente.
Spero che questo ti aiuti.
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>Questa funzione consente anche di specificare stati o colori fissi.
Un altro metodo sarebbe quello di creare un gestore di stato riga e trovare tutte le finestre e trovare tutti i framebox (usando xpath) e invalare e aggiornare la finestra tutti loro.