Scatola per trappola per topi e scatola biviariata<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho un anaysis che sputa una trama bivariata. Quando ho aggiunto alcune funzionalità aggiuntive tramite un'operazione di Trappola per topi, non posso selezionare punti e non ho idea del perché. C'è un modo per prevenire questo o almeno per aggiungere nuovamente questa funzionalità?
Come posso risolvere questo?
dt = Open ("$ SAMPLE_DATA / Big Class.jmp");
nw = new Window ("MouseTrap Test", Vlb = vlistbox ());
vlb << Append (biv = dt << Bivariate (Y (: altezza), X (: peso));
rbiv = biv << report;
rbiv [frame box (1)] << Aggiungi Graphics Script (Mousetrap (print ("test"), print ("test test")));
biv2 = dt << Bivariate (Y (: altezza), X (: peso));)
Ri: Trappola per topi e scatola con cornice biviariataGrazie, grazie, grazie. Questo mi sta facendo impazzire.
E sono abbastanza sicuro che intendi "\! N". Il tuo C # / C ++ sta mostrando.
Ri: Trappola per topi e scatola con cornice biviariataQuindi, # 4 allora. Per chiunque stia leggendo ... questo script usa una funzione chiamata "MouseTrap" in uno script grafico allegato al grafico superiore. Quando trascini con il mouse sul grafico superiore, la funzione MouseTrap cattura i movimenti del mouse, impedendo la normale selezione dei punti in un "rettangolo di banda di gomma". Per emulare il comportamento di selezione, MouseTrap mantiene le variabili di stato "scripton" e "startx ... othery". msharp creato scripton per sapere se eseguire o meno uno script che impiega troppo tempo per essere eseguito su ogni punto aggiuntivo aggiunto al rettangolo. MouseTrap usa anche scripton per tenere traccia di se il pulsante è stato appena premuto. Se è così, la X, Y viene catturata in startx, starty, altrimenti in otherx, othery. E se non è la prima volta, MouseTrap usa startx ... othery in un'istruzione where per selezionare effettivamente le righe nella tabella. Le funzioni Min e Max nell'account comando SelectWhere per disegnare il rettangolo di selezione dall'alto verso il basso, dal basso verso l'alto e da sinistra verso destra.
MakeRowStateHandler dovrebbe probabilmente anche fare lo stesso valore che MouseTrap fa; qui stampa solo le righe che sono cambiate. Ci sono un paio di altre dichiarazioni di stampa in questo codice; guarda il registro per avere un'idea di cosa sta succedendo.
//Startdt = Open( "$SAMPLE_DATA/Big Class.jmp" );script = "\[New Window("Test", Text Box("Hello"));]\";scripton = 1; // this is a better way to deal with row state changes (and not needed for the rest of the example) rs = dt<startx = .;starty = .;otherx = .;othery = .;nw = New Window( "MouseTrap Test", Vlb = V List Box() );vlb << Append( biv = dt << Bivariate( Y( :height ), X( :weight ) ); rbiv = biv << report; rbiv[frame box( 1 )] << Add Graphics Script( If( !Is Missing( startx ), Line( {startx, starty}, {otherx, starty}, {otherx, othery}, {startx, othery}, {startx, starty} ) ); Mousetrap( If( scripton, write("down\n"); startx = x; starty = y; , write("move\n"); otherx = x; othery = y; dt << selectwhere( Min( starty, othery ) < :height < Max( starty, othery ) & Min( startx, otherx ) < :weight < Max( startx, otherx ) ); ); scripton = 0; , write("up\n"); scripton = 1; startx = .; // toggle off Eval( Parse( script ) ); ); ); biv2 = dt << Bivariate( Y( :height ), X( :weight ) ););Ri: Trappola per topi e scatola con cornice biviariataTutte queste sono dichiarazioni OR. Ho bisogno di una dichiarazione di AND. Come posso selezionare i punti E eseguire lo script? Tutto ciò che hai elencato seleziona punti o esegue lo script.
Un po 'più di informazioni, ho uno script che viene eseguito ogni volta che viene selezionato un punto. Quando si trascina e si selezionano più punti, se l'utente è lento, lo script verrà eseguito più volte. Voglio impedire l'esecuzione dello script fino a quando l'utente non rilascia il mouse. Vedi l'esempio qui sotto.
//Inizio
dt = Open ("$ SAMPLE_DATA / Big Class.jmp");
script = "\ [Nuova finestra (" Test ", casella di testo (" Hello "));] \";
scripton = 1;
// Script selezionato
dt << Nuova colonna ("Script selezionato",
numerico,
Formula(
If (Selected (Row State ()) & scripton == 1,
Eval (Parse (copione))
)
)
);
Colonna (dt, "Script selezionato") << Nascondi;
// FIX?!?!?
nw = new Window ("MouseTrap Test", Vlb = vlistbox ());
vlb << Append (biv = dt << Bivariate (Y (: altezza), X (: peso));
rbiv = biv << report;
rbiv [frame box (1)] << Aggiungi Graphics Script (Mousetrap (scripton = 0, scripton = 1));
biv2 = dt << Bivariate (Y (: altezza), X (: peso));
)
Ri: Trappola per topi e scatola con cornice biviariatatre modi:
1) usa lo strumento pennello (premi
con lo script corrente (prova a tenere premuto alt mentre fai il pennello per cambiare la dimensione del pennello). Quando lo strumento pennello è attivo, la trappola per topi non lo è.
2) modifica il tuo script per inserire lo script grafico in precedenza nella lista dei disegni
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );nw = new Window("MouseTrap Test", Vlb = vlistbox());vlb << Append(biv = dt << Bivariate( Y( :height ), X( :weight ) );rbiv = biv << report;rbiv[frame box(1)] << Add Graphics Script( 1, Mousetrap(print("test"), print("test test")));biv2 = dt << Bivariate( Y( :height ), X( :weight ) );)La logica è: lo script che disegna per primo viene sovrascritto da successivi script grafici. Quindi i test per colpire il mouse vengono eseguiti nell'ordine opposto: se è stato estratto per ultimo, è più visibile e dovrebbe essere più facile da colpire con il mouse. Ora, se clicchi su un punto, il marcatore sega il mouse (e puoi trascinare un rettangolo di selezione). Se fai clic su un punto, lo script della trappola per topi prende il clic. Non puoi selezionare il rettangolo se fai clic su un punto. Puoi sperimentare usando rightClick-> Personalizza e sposta gli script su e giù.

(Ho salvato la sceneggiatura e ho sbirciato per vedere come fare il "1" sopra.)
3) utilizzare Handle invece di Mousetrap. A meno che tu non abbia davvero bisogno della trappola per topi per catturare tutta l'attività del mouse. Gestisci solo i clic di cattura sulla maniglia quadrata.
4) Suppongo che potresti ri-implementare la logica di selezione nella trappola per topi se davvero dovessi. 1-3 sembrano molto meglio però.