Bei Verwendung des lokalen Datenfilters werden alte Legenden wieder angezeigtHallo JSL Community!
Ich habe eine Variation von verwendet Code für die dynamische Diagrammlegende Dies funktioniert hervorragend, indem die Legende eines Diagramms automatisch mit nur einem Klick geändert wird.
Wenn jedoch versucht wird, den lokalen Datenfilter in die Diagramme aufzunehmen, wird aus irgendeinem Grund die Rahmenbox der alten / vorherigen Legenden nach dem Klicken auf den Filter immer wieder angezeigt. Ich habe eine gefunden vorherige Diskussion mit einem im Grunde gleichen Problem, aber leider war dieser Trend von 2014 ein Monolog, und als ich alle seine TS-Schritte ausprobierte, arbeitete keiner von ihnen an meinem Fall.
Die Legende selbst ist korrekt (die Daten zeigen die korrekten Farben und Markierungen), aber das Berichtsfenster ist mit allen vorherigen Rahmen sehr beschäftigt.
Ich habe eine Problemumgehung bekommen, bei der ich gerade eine zusätzliche Schaltfläche hinzugefügt habe, um alle unnötigen "Legenden" zu löschen, nachdem der lokale Datenfilter gedrückt wurde, aber sie erscheinen immer wieder, wenn ich einen anderen Filter drücke. Es gelang mir auch nicht, den Code für die Schaltfläche "Löschen" im lokalen Datenfilter hinzuzufügen (wenn ich also die Filterfunktion verwende, werden auch alle zusätzlichen unnötigen Legendenfelder gelöscht).
Ich frage mich nur, ob es eine Möglichkeit gibt, den in der Grafik gespeicherten "Speicher" der vorherigen Legenden zu löschen. Oder eine Abhilfemaßnahme, die in diesem Fall verwendet werden kann.
Vielen Dank im Voraus für die Hilfe und Unterstützung !!!
Diagramm vor Verwendung des lokalen Datenfilters
Diagramm nach Verwendung des lokalen Datenfilters

Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtKönnen Sie ein Skript einfügen, das in einer der JMP-Beispieldatentabellen funktioniert und zeigt, welche Plattform Sie verwenden und wie die Legende hinzugefügt wird?
Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtVielen Dank für die Antwort. Der Einfachheit halber werde ich den Code aus diesem verwenden Post und ich fügte gerade den lokalen Datenfilterabschnitt des Diagramms hinzu.
//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;
Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtIch habe nicht bemerkt, dass ich die Bilder in meinen ursprünglichen Beiträgen nicht korrekt hochgeladen habe.
Diagramm vor Verwendung des lokalen Datenfilters

Diagramm nach Verwendung des lokalen Datenfilters

Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtAlso als Beispiel mit dem obigen Code. Ich klicke ein paar Mal zwischen "Alter" und "Geschlecht" auf den Legendenbereich der Benutzeroberfläche, verwende dann den lokalen Filter und die "alten" Legenden kehren zurück.

Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtErstens scheint dieses Problem mit JMP 15 behoben zu sein. Glücklicherweise gibt es eine einfache Lösung für frühere Versionen.
Wenn Sie die alte Legende entfernen, verwenden Sie:
report(obj)[BorderBox(2)] << Delete;
Der Anzeigeteil der Legende wird entfernt, der DisplayFrame verfügt jedoch weiterhin über ein Handle für die alte Legende. Wenn Sie die neue Legende hinzufügen, gibt es jetzt zwei. Sie können dies auch sehen, bevor Sie den Datenfilter berühren. Wenn Sie das Skript für den Bericht speichern, werden zwei RowLegend () -Befehle angezeigt. Die beiden Legenden werden auch wieder angezeigt, wenn Sie für den Bericht die Option "Analyse wiederholen" mit oder ohne Datenfilter verwenden.
Um sicherzustellen, dass die Legende vollständig entfernt wird und nicht nur der Anzeigeteil der Legende, können Sie das Feld delete durch Folgendes ersetzen:
report(obj)[OwnerBox(1)] << Remove;
Dies entspricht einem Rechtsklick> Entfernen in der Legende, wodurch diese ordnungsgemäß entfernt wird.
Ich hoffe, das hilft!
Betreff: Alte Legenden werden bei Verwendung des lokalen Datenfilters erneut angezeigtDas hat funktioniert!!!! Fantastisch vielen dank !!!! Mein Code ist jetzt schön !!!