Re : Boîte de contexte de filtre de données imbriqué/multipleJe suppose que c'est là que je suis perdu. Il semble que le Bubble Plot dépende de toutes les sources. Tu peut en effet place ton " tracé final" dans une boîte de source de filtre de données elle-même, mais vous verrez alors tous les indésirable données, juste désélectionnées/grisées.
Re : Boîte de contexte de filtre de données imbriqué/multipleJe ne peux pas dire oui de manière définitive, mais si vous regardez la structure du code que j'ai fourni, je peux imaginer pouvoir l'étendre pour prendre en charge votre structure.
Je prendrais l'échantillon et je verrais si vous pouvez le faire passer à deux graphiques de filtrage différents au deuxième niveau de filtres.
Re : Boîte de contexte de filtre de données imbriqué/multiplePouvez-vous appliquer différents sous-filtres à différents tracés avec cette méthode ? Il semble que toutes les parcelles recevront les mêmes filtres.
J'ai besoin d'un seul filtre principal avec une série de sous-filtres indépendants (invisibles) appliqués à différents ensembles de tracés. J'ai mis à jour mon message d'origine avec un filtre "où" commenté pour mieux transmettre cela.
Re : Boîte de contexte de filtre de données imbriqué/multipleVoici un exemple d'une discussion que j'ai eue concernant un filtre à 2 niveaux.C'est une extension de l'exemple que j'ai fourni dans mon dernier message.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Data Filter Source Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} )
)
)
)
)
),
Platform(
Current Data Table(),
Bubble Plot( X( :weight ), Y( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
)
)
);Re : Boîte de contexte de filtre de données imbriqué/multipleMerci Jim! À moins que je ne comprenne mal/oublie quelque chose, cela ne filtre que le deuxième graphique en fonction du premier. Comment filtrer le deuxième graphique en plus du premier ?
c'est à dire Je veux que le deuxième graphique soit filtré en fonction du premier, mais en plus, je ne veux qu'un sous-ensemble des données du premier filtre.
En fait, ce que je veux, c'est ajouter "Where( :ToolID == pTools[j] );" au tableau de variabilité, mais si je fais cela, il ignore complètement la boîte de source du filtre de données (ou dans mon cas, le filtre de données local). En fait, j'ai passé beaucoup de temps à essayer de comprendre ce que je faisais de mal avec la boîte de source du filtre de données pour réaliser que cela fonctionnait une fois que j'ai supprimé la ligne "où" ci-dessus des graphiques de variabilité.
Re : Boîte de contexte de filtre de données imbriqué/multipleJe crois comprendre ce que tu veux.Voici un exemple, tiré directement du Scripting Index
Aide==>Index des scripts==>DataFilterSourceBox
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Selection Filter",
Data Filter Context Box(
H List Box(
dfsb =
Data Filter Source Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements(
Bar( X, Legend( 3 ) )
),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Filter" )}
)
)
)
),
Platform(
Current Data Table(),
Bubble Plot(
X( :weight ),
Y( :height ),
Sizes( :age ),
Title Position( 0, 0 )
)
)
)
)
);
En fonction de vos sélections "Clicked On" dans un graphique, il filtre un autre graphique
Boîte contextuelle Filtre de données imbriqué/multiple::edit: : Ajout d'un commentaire dans le code et d'une capture d'écran pour faciliter la visualisation.
Est-il possible de faire des boîtes de contexte de filtre imbriquées ou de générer quelque chose qui fait effectivement la même chose ? Fondamentalement, je veux un ensemble de filtres parents qui s'appliquent à tous les tracés d'un rapport. Les rapports de ce tracé ont besoin de leurs propres filtres particuliers pour limiter les données qu'ils affichent.
J'ai un rapport interactif posé comme ceci:
(1) Une boîte de liste H divisée en deux colonnes.
(A) La première colonne contient un ensemble de filtres qui s'appliquent à tout ce qui se trouve dans la deuxième colonne.
(B) La deuxième colonne contient une boîte à onglets avec plusieurs onglets pour différents "types d'outils".
(i) Chaque onglet contient une boîte de liste h avec une colonne de tableaux de variabilité pour chaque "outil" d'un type donné. Chaque colonne a besoin de son propre filtre pour limiter "l'outil" qu'elle affiche.
(a) Ce filtre est codé en dur sur la base d'une liste, mais les VarCharts doivent être mis à jour en fonction des filtres de (A).
Ce que je trouve, c'est que si je mets un where() dans le graphique de variabilité, il ignore les filtres dans (A). J'ai ensuite essayé d'imbriquer des boîtes de contexte de filtre, mais cela ne semble pas fonctionner. Les nouveaux filtres s'affichent, mais seul le filtre le plus parent fait quoi que ce soit.
J'ai essayé de créer une version simplifiée/anonymisée de mon code, il peut donc y avoir des fautes de frappe :
myRootPath = "C:\Log_Testing\" ; monLogPath = monRootPath ; monReportPath = monRootPath || "Reportage\"; monchemin = monRootPath || "Journaux\" ; // I outils pour tracer // format : ToolID iTools = {"i1", "i5"} ; // P outils pour tracer // format : ToolID pTools = {"p1", "p2"} ; Définir le répertoire actuel ( mypath ); mainDt = Open( myLogPath || "Log.jmp" ); Lot Interactif( 1 ); //Mode batch dt_name = mainDt << get name(); dt_path = myLogPath ; mainDt << Effacer Sélectionner ; filterContextBox = Boîte de contexte de filtre de données(); spcWin = Nouvelle fenêtre( dt_name || "_VarCharts", filterContextBox ); filterBox = H List Box( mainDt << Data Filter( //Conditionnel, Local, Ajouter un filtre( colonnes( :WW,
), Affichage( :WW, Affichage des blocs ), Affichage(
, Affichage des blocs ), ), Mode( Sélectionner( 0 ), Afficher( 1 ), Inclure( 1 ) ), ) ); filterContextBox << Append( filterbox ); filterBox << Append( tb = Tab Box() ); tb << Add( "P", hPTab = H List Box() ); tb << Add( "I", hITab = H List Box() ); numPTools = N Items( pTools ); numITools = N éléments( iTools ); //Créer des tracés P pour( j = 1, j <= numPTools, j++, hPTab << Append( vToolBox = V List Box() ); vToolBox << Append( toolTab = Outline Box( pTools[j] ) ); ycol = "VariableName"; parseName = "Tableau de variabilité pour " || ycol; toolTab << append( NewChart = Tableau de variabilité( Y( Column( ycol ) ), X( :WW,
), Max Iter( 100 ), Conv Limit( 0.00000001 ), Number Integration Abscissas( 128 ), Number Function Evals( 65536 ), Analysis Type( Name( "Choose best analysis (EMS REML Bayesian)") ), Connect Cell Means( 1 ), Std Dev Chart ( 0 ), Points Jittered ( 0 ), AIAG Labels ( 0 ), Automatic Recalc ( 1 ),
/*Si la ligne suivante n'est pas commentée, elle ignore le filtre local et n'utilise que celui-ci. J'ai besoin des deux. */
Où( :ToolID == pTools[j] ); SendToReport( Dispatch( {}, "Variability Gauge", OutlineBox, {Set Title( "" )} ), Dispatch( {parseName}, "2", ScaleBox( 2 ), {Format( "Fixed Dec", 4, 0 ), Min( 0 )} ), Dispatch( {parseName}, "Group Means", StringColBox, {Visibility( "Collapse" )} ), Dispatch( {parseName}, "", PlotColBox, {Visibility( "Collapse" ) } ) ) ) ); );
Re : Boîte contextuelle de filtre de données imbriqué/multipleJ'ai joué avec le code, mais je n'ai pas réussi à le faire fonctionner comme vous l'avez spécifié.
Désolé, peut-être qu'un autre membre de la communauté a une idée.
Voici un exemple où il y a 2 chemins indépendants tirés d'un seul graphique de sélection ..... Je pense que c'est proche de ce que vous voulez
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Potential",
Character,
"Nominal",
Set Values(
{"1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2",
"1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2"}
)
);
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
//Data Filter Context Box(
V List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Potential ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Platform(
Current Data Table(),
Bubble Plot( Y( :weight ), X( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
),
),
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Platform(
Current Data Table(),
Bubble Plot( X( :weight ), Y( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
)
)
)
//)
)
)
)
)
);Re : Boîte de contexte de filtre de données imbriqué/multipleMerci Jim! J'avais trouvé quelque chose de similaire. J'essayais de trouver un moyen de masquer/réduire les points non sélectionnés, mais il ne semble pas que ce soit une possibilité.
Je pense que je suis également arrivé à une manière différente de procéder : en utilisant le "by ()" et en parcourant chaque ToolID à l'aide d'un SendToGroup () séparé. C'est un peu plus compliqué de mettre en place les titres alors, mais je posterai les résultats une fois que j'aurai compris. J'espère que cela aidera quelqu'un à l'avenir, comme tous vos messages l'ont fait !Re : Boîte de contexte de filtre de données imbriqué/multipleJ'ai joint deux exemples de mises en page similaires à ce que vous décrivez :
SFCrimeNestedFilter.jsl montre comment imbriquer la boîte de contexte de filtre de données pour obtenir un comportement en cascade/hiérarchique dans les filtres.Cette approche fonctionne dans JMP 10+, bien que la syntaxe que j'utilise pour la Tab Box soit JMP 13+.
SFCrimeFilterWithWhere.jsl remplace le filtre interne par une clause Where() pour chaque rapport.Ce type de mise en page fonctionne dans JMP 14, mais ne fonctionnait pas dans les versions précédentes.Le problème est que le filtre utilise la table complète, tandis que le rapport utilise une table de sous-ensemble.
J'espère que ça aide!
Re : Boîte contextuelle de filtre de données imbriqué/multipleCela semble être exactement ce que je recherche ! Merci beaucoup! Il semble donc que mon erreur ait été d'utiliser des boîtes source?Re : Zone de contexte de filtre de données imbriquées/multiplesDans les exemples de Jim, la zone Source du filtre de données est exactement ce qui est nécessaire pour utiliser un graphique JMP pour en filtrer un autre.Je n'ai pas vu de zone source de filtre de données dans votre script d'origine. Je pense que le principal problème était l'utilisation de la clause Where() (table de sous-ensemble) avec un filtre sur la table parent.
La boîte source du filtre de données n'a besoin que d'utiliser une plate-forme comme filtre, car contrairement à l'objet filtre de données intégré, nous ne pouvons pas déduire quel devrait être le comportement du filtre.