Créer un sous-ensemble à partir d'un graphique interactif ?Bonjour. J'essaie de créer un graphique interactif pour afficher les données d'un tableau récapitulatif. L'objectif est de créer un graphique linéaire avec des points sur lesquels on peut cliquer pour sous-ensembler les données de ce point particulier. Par exemple, dans le script ci-dessous, j'ai un graphique d'un tableau récapitulatif par âge de l'exemple de tableau Big Class. L'utilisateur doit pouvoir cliquer sur un point du graphique et lui faire afficher automatiquement un sous-ensemble de tableau contenant toutes les données de ce point.
Le problème que je rencontre est qu'un simple clic ne fonctionnera pas car aucune donnée n'a été sélectionnée. L'utilisateur doit double-cliquer sur un point pour sélectionner les données, puis cliquer à nouveau pour exécuter l'expression du sous-ensemble. Existe-t-il un moyen de le faire sans avoir à triple-cliquer ? Merci.
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>Re : Créer un sous-ensemble à partir d'un graphique interactif ?Dans JMP 15.0, une option de menu Sous-ensemble RMB a été ajoutée pour survoler les étiquettes qui font exactement ce que vous avez décrit.
Désormais, tous les graphiques sont dotés de cette fonctionnalité intégrée.
Je viens de l'essayer et les résultats sont exactement les mêmes que lors de l'exécution de votre script.
Notez qu'il n'est pas nécessaire de créer un tableau récapitulatif séparé : la nouvelle fonctionnalité "comprend" les agrégations effectuées par des graphiques comme les graphiques en courbes, les graphiques à barres, etc.
En d’autres termes, le sous-ensemble est basé sur un filtre de données local dérivé de la définition de l’élément visuel sous le pointeur.
Cette technique prend également en charge la création de graphlets et leur lancement dans de nouvelles fenêtres (c'est-à-dire drill-down).
Pour plus de détails, consultez https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/using-jmp.pdf , page 512.

Re : Créer un sous-ensemble à partir d'un graphique interactif ?Une alternative à une Mouse Box consiste à appliquer un gestionnaire d’état de ligne à la table de données. Il faut un clic pour créer le sous-ensemble (ce qui peut être ennuyeux si vous essayez de sélectionner plusieurs points en les faisant glisser, car de nombreux sous-ensembles involontaires peuvent être créés).
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);
Re : Créer un sous-ensemble à partir d'un graphique interactif ?Parfait. Très utile.Merci beaucoup.
Re : Créer un sous-ensemble à partir d'un graphique interactif ?En faisant tout le travail pour créer un script utilisant des pièges à souris, je pense que vous pouvez accomplir ce que vous voulez avec un script très simple, si vous êtes prêt à utiliser les actions de la souris par défaut pour sélectionner les points de données, puis à cliquer simplement sur sur un bouton ajouté pour faire la sélection

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 );