Lokale Datenfilterarithmetik (z. B. für Graphlets)Graphlets sind sehr cool!
Der lokale Datenfilter ist großartig. Es passt die Daten des Graphlets automatisch an die Untergruppe des Hauptdiagramms an.
Gibt es JSL-Funktionen zum Anpassen dieses Filters?
Das habe ich bereits gefunden
Skip Filters()
in Nascifs Beitrag Bewegen Sie den Mauszeiger über das Graphlet einer anderen Datentabelle
Dabei werden ungenutzte Teile des Filters entfernt, sodass der Filter auch für andere Tabellen ohne Warnmeldungen funktionieren kann.
Gibt es eine Dokumentation, wie es im Detail funktioniert?
Gibt es auch eine JSL-Funktion zum Hinzufügen oder Überschneiden von Filtern?
Anwendungsfall:
Wenn ich ein Diagramm mit einem Filter erstellt habe (Bif-Klassendiagramm beschränkt auf Alter = 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 ) ) )
)
)
und verwenden Sie es als Hover-Label (über „save Script“ – „Hover Label“/„Paste Graphlet“) ...
Der lokale Datenfilter ist immer noch im JSL-Skript vorhanden:
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 ) ) )
)
)
)}
)
)
);
aber seine Funktion wird automatisch durch den lokalen Datenfilter aus dem Hover Label Extension Framework ersetzt (alle Altersgruppen sichtbar):

Daher wäre es großartig, eine „Merge“-Funktion zu haben, um den manuellen lokalen Datenfilter mit dem aus dem Hover Label Extension Framework zu kombinieren.
InhaltsorganisationBetreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)Das ist eine Lösung!
Es gibt keine Chance für die Handhabung des lokalen Datenfilters des Hover Label Extension Framework, zu entkommen.
Betreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)Möglicherweise muss hierfür eine zusätzliche Datentabelle verwendet werden
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();Betreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)Ah, „Filter hinzufügen“ fügt eine neue „ODER“-Gruppe hinzu – dieses Detail habe ich übersehen:

Wir brauchen also nur eine Lösung, um das Miniaturdiagramm im Hover-Label zu reparieren.
Hm...
Betreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)Ich denke, letzteres sollte auch funktionieren, wenn Sie das Skript auf andere Weise ändern (wie ich schon sagte, ich habe nur rohe Gewalt angewendet, um es zum Laufen zu bringen). Wenn ich es bereinigen würde, würde die erste Iteration vielleicht so aussehen, dass ich zuerst die Filter aus dem Hover-Label anwende und dann zusätzliche Filter hinzufüge
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">Betreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)</LINGO-SUB><LINGO-BODY id="lingo-body-525478" slang="en-US" mode="NONE"><P>Hallo Jarmo.<BR /> Vielen Dank für das JSL-Sniplet – man kann viel daraus lernen ...</P><P> </P><P>Es ist interessant:</P><OL><LI>Wenn der lokale Datenfilter im Graph Builder-Teil (mein Code) erstellt wird, wird er vom lokalen Datenfilter aus dem Hover Label Extension Framework überschrieben.</LI><LI>Wenn der lokale Datenfilter nach dem Graph Builder (Ihrem Code) erstellt wird, überschreibt er den lokalen Datenfilter aus dem Hover Label Extrension Framework. *)</LI></OL><P> </P><P>*) Bei näherer Betrachtung:</P><P>Dies gilt nur für das Diagramm, das sich öffnet, nachdem Sie auf das Miniaturdiagramm im Hover-Label geklickt haben.<BR /> Die Miniaturgrafik selbst zeigt immer noch alle Altersgruppen, also Fall 1)</P><P>-> überraschend, dass zwei unterschiedliche Diagramme generiert werden. Mit verschiedenen Möglichkeiten, den lokalen Datenfilter zu überschreiben?<BR /><BR /></P><P>Eine letzte Frage:<BR /> Gibt es ein Tutorial, das die verschiedenen lokalen Datenfilterfunktionen erklärt?<BR /> zB warum müssen Sie verwenden</P><PRE><CODE class=" language-jsl">f << (Filter Column(:age) << Where(::age == 14));
ein Warum tut es
f << Add Filter(Columns(:age), Where(::age == 14));
Den gleichen Filter hinzufügen, aber ohne Wirkung?
Betreff: Lokale Datenfilterarithmetik (z. B. für Graphlets)Sie können dies per Skript durchführen, aber es wäre auf jeden Fall schön, eine Option zu haben, mit der die lokalen Datenfilter zusammengeführt werden könnten. Dieser Code kann sauberer gemacht werden, aber ich habe ihn nur brutal erzwungen
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));
),
)}
)
)
);