Arithmétique des filtres de données locaux (par exemple pour les Graphlets)Les graphlets sont très cool !
Le filtre de données local est génial. Il ajuste automatiquement les données du graphlet pour correspondre au sous-groupe du graphique principal.
Existe-t-il des fonctions JSL pour ajuster ce filtre ?
J'ai déjà trouvé le
Skip Filters()
dans le message de Nascif Survolez le graphlet à partir d'une autre table de données
Il supprime les parties inutilisées du filtre de sorte que le filtre puisse également fonctionner pour d'autres tables sans messages d'avertissement.
Existe-t-il une documentation expliquant comment cela fonctionne en détail ?
Existe-t-il également une fonction JSL pour ajouter ou croiser des filtres ?
Cas de candidature :
Si j'ai généré un graphique avec un filtre (tracé de classe Bif limité à l'âge = 14)
Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter(
Add Filter( columns( :age ), Where( :age == 14 ), Display( :age, N Items( 6 ) ) )
)
)
et utilisez-le comme étiquette de survol (via "enregistrer le script" - "Étiquette de survol"/"Coller le graphique")...
le filtre de données local est toujours là dans le script JSL :
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Graph Builder(
Size( 422, 474 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter( Add Filter( columns( :age ), Where( :age == 14 ) ) )
)
)
)}
)
)
);
mais sa fonction est automatiquement remplacée par le filtre de données local du Hover Label Extension Framework (tous les âges visibles) :

Ce serait donc formidable d'avoir une fonction de "fusion" pour combiner le filtre de données local manuel avec celui du Hover Label Extension Framework.
Organisation du contenuRe : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)C'est une solution !
aucune chance pour la gestion du filtre de données local du Hover Label Extension Framework de s'échapper.
Re : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)Il faudra peut-être utiliser un tableau de données supplémentaire pour cela
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
If( Is Empty(dt1),
dt1 = dt << Subset(All Rows, Selected Columns(0), invisible);
);
dt1 << Clear Row States;
filter_expr = Expr(And());
Insert Into(filter_expr, Name Expr(_whereExpr));
Insert Into(filter_expr, Name Expr(:age == 14));
Insert Into(filter_expr, Name Expr(:height >= 55 & :height <= 70));
Eval(EvalExpr(dt1 << Select Where(!filter_expr)));
dt1 << Hide and Exclude(1);
gb_expr = EvalExpr(dt1 << Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26))),
Local Data Filter(
Grouped by AND(1),
Add Filter(columns(:sex), Where(Expr(NameExpr(_whereExpr)))),
Add Filter(columns(:age), Where(:age == 14), Display(:age, N Items(6))),
Add Filter(columns(:height), Where(:height >= 55 & :height <= 70))
)
));
gb_expr;
),
Click(
dt1 << Clear Row States;
gb2 = gb_expr;
Eval(EvalExpr(gb2 << On Close(
Try(Close(Expr(dt1), no save));
)));
)
)}
)
)
);
Write();Re : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)Ah, "Ajouter un filtre" ajoute un nouveau groupe "OU" - j'ai raté ce détail :

Nous avons donc juste besoin d'une solution pour corriger le graphique miniature dans l'étiquette de survol.
Hum...
Re : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)Je pense que le dernier devrait également fonctionner si vous modifiez le script autrement (comme je l'ai dit, j'ai simplement forcé la force pour le faire fonctionner). Si je devais le nettoyer, la première itération serait peut-être quelque chose comme ceci où j'applique d'abord les filtres de l'étiquette de survol, puis j'ajoute des filtres supplémentaires.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Local({gb, f},
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Eval(EvalExpr(
f = gb << Local Data Filter(
Add Filter(
columns(expr(_filters)), Where(expr(NameExpr(_whereExpr)))
)
)
));
//f << Conditional(1);
f << Grouped By And(1);
f << Add Filter(Columns(:age), Where(:age == 14));
f << Add Filter(Columns(:height), Where(:height >= 55));
)
),
)}
)
)
);
Write();
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-525478" slang="en-US" mode="NONE">Re : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)</LINGO-SUB><LINGO-BODY id="lingo-body-525478" slang="en-US" mode="NONE"><P>Salut Jarmo.<BR /> Merci beaucoup pour l'extrait JSL - beaucoup à apprendre...</P><P> </P><P>C'est intéressant:</P><OL><LI>Si le filtre de données local est créé dans la partie Graph Builder (mon code), il est remplacé par le filtre de données local du Hover Label Extension Framework.</LI><LI>Si le filtre de données local est créé après le générateur de graphiques (votre code), il écrase le filtre de données local du framework d'extension d'étiquette de survol. *)</LI></OL><P> </P><P>*) En regardant de plus près :</P><P>Cela vaut uniquement pour le graphique qui s'ouvre après avoir cliqué sur le graphique miniature dans l'étiquette de survol.<BR /> Le graphique miniature lui-même montre toujours tous les âges, donc cas 1)</P><P>-> surprenant qu'il y ait deux graphiques distincts générés. Avec différentes manières d’écraser le filtre de données local ?<BR /><BR /></P><P>Une dernière question :<BR /> Existe-t-il un didacticiel expliquant les différentes fonctions de filtre de données locales.<BR /> par exemple, pourquoi devez-vous utiliser</P><PRE><CODE class=" language-jsl">f << (Filter Column(:age) << Where(::age == 14));
et pourquoi
f << Add Filter(Columns(:age), Where(::age == 14));
ajouter le même filtre, mais sans aucun effet ?
Re : Arithmétique des filtres de données locaux (par exemple pour les Graphlets)Vous pouvez créer un script pour cela, mais ce serait certainement bien d'avoir une option permettant de fusionner les filtres de données locaux. Ce code peut être rendu plus propre, mais je l'ai simplement forcé
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Insert Into(_filters, Name Expr(:age));
Eval(Substitute(
Expr(
f = gb << Local Data Filter(Add Filter(
columns(_col_list_), Where(_wheres_)
))
),
Expr(_col_list_),
_filters,
Expr(_wheres_),
Parse(_where)
));
f << (Filter Column(:age) << Where(::age == 14));
),
)}
)
)
);