Les anciennes légendes réapparaissent lors de l'utilisation du filtre de données localBonjour la communauté JSL!
J'ai utilisé une variation de code pour la légende du graphique dynamique , cela fonctionne très bien en changeant automatiquement la légende d'un graphique en un seul clic.
Cependant, quand il a essayé d'inclure le filtre de données local dans les graphiques, pour une raison quelconque, la boîte de bordure des légendes anciennes / précédentes réapparaît après avoir cliqué sur le filtre. j'ai trouvé un discussion précédente avec essentiellement le même problème, mais regrettable que la tendance de 2014 soit un monologue, et quand j'ai essayé toutes ses étapes TS, aucune d'entre elles ne fonctionne sur mon cas.
La légende elle-même est correcte (les données montrent les couleurs et les marqueurs corrects), mais la fenêtre de rapport est très occupée par toutes les zones de bordure précédentes.
J'ai eu une solution de contournement, où j'ai juste ajouté un bouton supplémentaire pour supprimer toutes les "légendes" inutiles après avoir appuyé sur le filtre de données local, mais elles continuent de réapparaître chaque fois que je frappe un filtre différent. J'ai également échoué à ajouter le code du bouton "Supprimer" à l'intérieur du filtre de données local (donc chaque fois que j'utilise la fonctionnalité de filtre, il supprimera également toutes les zones de légende inutiles supplémentaires).
Je me demande simplement s'il existe un moyen de supprimer la "mémoire" stockée des légendes précédentes dans le graphique. Ou toute solution de contournement qui peut être utilisée dans ce cas.
Merci d'avance pour l'aide et le soutien !!!
Graphique avant d'utiliser le filtre de données local
Graphique après utilisation du filtre de données local

Re: Old legends réapparaît lors de l'utilisation du filtre de données localPouvez-vous inclure un script qui fonctionne sur l'un des exemples de tableaux de données JMP qui montre quelle plateforme vous utilisez et comment la légende est ajoutée?
Re: Old legends réapparaît lors de l'utilisation du filtre de données localMerci beaucoup pour la réponse. Pour plus de commodité, je vais utiliser le code de ce Publier et je viens d'ajouter la section Filtre de données locales du graphique.
//Begin Script;
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
variables = {"age", "sex"};
// Initial nlevels is the number of levels of 'age', as it is the first by-group used.
fitVar = "age";
nlevels=6;
// Creating the legend. For each selection, the previous spline fits are removed, then
// new ones are generated.
BC_legend = Panel Box( "Choose Legend",
legend = Radio Box(
{"age", "sex"},
fitVar = legend << Get Selected;
Match( fitVar,
"age",
(Summarize(vals = By( :age ), c=count );
For(ii = nlevels, ii >=1, ii--,
obj << (Curve[1] << Remove Fit );
);
report(obj)[BorderBox(2)] << Delete;
report(obj)[FrameBox(1)] << Row Legend("age", color(1), marker(1));
obj << Group By( :age ) << Fit Spline( 0.1, standardized );
nlevels = nItems(vals);
),
"sex",
(Summarize(vals = By( :sex ), c=count );
For(ii = nlevels, ii >=1, ii--,
obj << (Curve[1] << Remove Fit );
);
report(obj)[BorderBox(2)] << Delete;
report(obj)[FrameBox(1)] << Row Legend("sex", color(1), marker(1));
obj << Group By( :sex ) << Fit Spline( 0.1, standardized );
nlevels = nItems(vals); )
);
));
// Fitting the initial Bivariate fit with 'age' as the by-group, adding the legend
// to control the selections.
nw = New Window( "BigClassBivariate",
HListBox(
obj = dt << Bivariate(
Y( :weight ),
X( :height ),
Group By( :age ),
Fit Spline( 0.1, standardized ),
Local Data Filter(
Location( {0, 0} ),
Mode( Select( 0 ), Show( 1 ), Include( 1 ) ),
Add Filter(
columns( :age ),
Display( :age, Size( 204, 200 ), List Display )
)
),
SendToReport(
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Frame Size( 493, 354 ),Marker Size( 2 ), Marker Drawing Mode( "Normal" ), Row Legend(
dt:(fitVar),
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "Standard" ),
Continuous Scale( Cont ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
); ,
BC_legend
));
//End Script;
Re: Old legends réapparaît lors de l'utilisation du filtre de données localJe ne savais pas que je n'avais pas téléchargé les images correctement sur mes messages d'origine.
Graphique avant d'utiliser le filtre de données local

Graphique après utilisation du filtre de données local

Re: Old legends réapparaît lors de l'utilisation du filtre de données localDonc, à titre d'exemple avec le code ci-dessus. Je clique quelques fois entre "Âge" et "sexe" dans la section de légende de choix de l'interface, puis j'utilise le filtre local et les "anciennes" légendes apparaissent.

Re: Old legends réapparaît lors de l'utilisation du filtre de données localTout d'abord, il semble que ce problème soit résolu avec JMP 15. Heureusement, il existe une solution de contournement facile pour les versions antérieures.
Lorsque vous supprimez l'ancienne légende à l'aide de:
report(obj)[BorderBox(2)] << Delete;
la partie d'affichage de la légende est supprimée, mais le DisplayFrame a toujours une poignée pour l'ancienne légende, et lorsque vous ajoutez la nouvelle légende, il y en a maintenant deux. Vous pouvez également le voir avant même de toucher le filtre de données, si vous enregistrez le script pour le rapport, vous verrez deux commandes RowLegend (). Les deux légendes réapparaîtraient également si vous utilisez Redo Analysis sur le rapport, avec ou sans filtre de données.
Pour vous assurer que la légende est complètement supprimée et pas seulement la partie d'affichage de la légende, vous pouvez utiliser remplacer la case supprimer par:
report(obj)[OwnerBox(1)] << Remove;
Cela équivaut à un clic droit> Supprimer dans la légende, ce qui le supprime correctement.
J'espère que cela pourra aider!
Re: Old legends réapparaît lors de l'utilisation du filtre de données localÇa a marché!!!! Fantastique merci beaucoup !!!! Mon code est beau maintenant !!!