Creare un sottoinsieme da un grafico interattivo?Ciao. Sto cercando di creare un grafico interattivo per visualizzare i dati da una tabella di riepilogo. L'obiettivo è creare un grafico a linee con punti su cui è possibile fare clic per suddividere i dati da quel punto particolare. Ad esempio, nello script seguente, ho un grafico di una tabella riepilogativa per età della tabella di esempio Big Class. L'utente dovrebbe essere in grado di fare clic su un punto del grafico e visualizzare automaticamente una tabella di sottoinsieme contenente tutti i dati da quel punto.
Il problema che sto riscontrando è che un singolo clic non funzionerà perché non sono stati selezionati dati. L'utente deve fare doppio clic su un punto per selezionare i dati, quindi fare nuovamente clic per eseguire l'espressione del sottoinsieme. C'è un modo per farlo senza dover fare triplo clic? Grazie.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dtSummary = dt << Summary(
Group( :age ),
Freq( "None" ),
Weight( "None" ),
output table name( "dtSummary" )
);
gbExpr = Expr(
gb = Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :N Rows ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, [-1], 4, [-1]} ), Position( {-1, -1} )}
)
)
);
);
ExprA = Expr(
dtSubset = dt << Subset( Output Table( "Subset" ), Selected Rows( 1 ), Selected Columns( 0 ));
dtSummary << Clear Selected Rows;
);
GraphWindow = New Window( "Graph" );
GraphWindow << Append(
MouseBox(
gbExpr,
<<SETCLICKENABLE></SETCLICKENABLE>Ri: Creazione di un sottoinsieme da un grafico interattivo?In JMP 15.0, è stata aggiunta un'opzione di menu Sottoinsieme RMB alle etichette al passaggio del mouse che fanno esattamente ciò che hai descritto.
Ora tutti i grafici sono dotati di questa funzionalità integrata.
L'ho appena provato e i risultati sono esattamente gli stessi di quando si esegue lo script.
Tieni presente che non è necessario creare una tabella di riepilogo separata: la nuova funzionalità "comprende" le aggregazioni effettuate da grafici come grafici a linee, grafici a barre, ecc.
In altre parole, il sottoinsieme si basa su un filtro dati locale derivato dalla definizione dell'elemento visivo sotto il puntatore.
Questa tecnica supporta anche la creazione di graphlet e il loro lancio in nuove finestre (noto anche come drill-down).
Per maggiori dettagli, controlla https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/using-jmp.pdf , pagina 512.

Ri: Creazione di un sottoinsieme da un grafico interattivo?Un'alternativa al Mouse Box consiste nell'applicare un gestore dello stato della riga alla tabella dati. È necessario un clic per creare il sottoinsieme (il che può essere fastidioso se si tenta di selezionare più punti trascinando poiché potrebbero essere creati molti sottoinsiemi non desiderati).
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dtSummary = dt << Summary(Group(:age));
gbExpr = Expr(
gb = Graph Builder(
Show Control Panel(0),
Variables(X(:age), Y(:N Rows)),
Elements(Points(X, Y, Legend(3)), Line(X, Y, Legend(4)))
)
);
ExprA = Expr(
dtSubset = dt << Subset(Selected Rows(1));
dtSummary << Clear Select;
);
f = Function({a}, ExprA);
rs = dt << make row state handler(f);
GraphWindow = New Window("Graph", gbExpr);
Ri: Creazione di un sottoinsieme da un grafico interattivo?Perfetto. Molto utile.Grazie mille.
Ri: Creazione di un sottoinsieme da un grafico interattivo?Mentre fai tutto il lavoro per creare uno script che utilizza le trappole per mouse, penso che puoi ottenere ciò che desideri con uno script molto semplice, se sei disposto a utilizzare le azioni predefinite del mouse per selezionare i punti dati e quindi fare semplicemente clic su un pulsante aggiunto per effettuare la selezione

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);
subsetButton = Button Box( "Click to Create a Subset of Selected Points",
If( N Rows( dt << get selected rows ) > 0,
dt << subset( selected rows( 1 ), selected columns( 0 ) )
)
);
Report( gb )["Graph Builder"] << append( subsetButton );