Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIch schätze, da bin ich verloren. Es scheint, dass der Bubble Plot von allen Quellen abhängig ist. Du kann in Kraft treten platzieren Sie Ihre " final"-Diagramm in einem Datenfilter-Quellfeld selbst, aber dann sehen Sie alle unerwünscht Daten, nur nicht ausgewählt/ausgegraut.
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIch kann nicht definitiv ja sagen, aber wenn Sie sich die Struktur des von mir bereitgestellten Codes ansehen, kann ich mir vorstellen, dass ich ihn erweitern kann, um Ihre Struktur zu unterstützen.
Ich würde das Beispiel nehmen und sehen, ob Sie es auf der zweiten Filterebene zu zwei verschiedenen Filterdiagrammen verzweigen können.
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterKönnen Sie mit dieser Methode verschiedene Unterfilter auf verschiedene Plots anwenden? Es scheint, dass alle Plots die gleichen Filter erhalten werden.
Ich benötige einen einzelnen Primärfilter mit einer Reihe unabhängiger (unsichtbarer) Unterfilter, die auf verschiedene Diagrammsätze angewendet werden. Ich habe meinen ursprünglichen Beitrag mit einem auskommentierten „Wo“-Filter aktualisiert, um dies besser zu vermitteln.
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterHier ist ein Beispiel aus einer Diskussion, die ich über einen 2-Stufen-Filter hatte.Es ist eine Erweiterung des Beispiels, das ich in meinem letzten Beitrag bereitgestellt habe.
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 ) )
)
)
)
);Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterDanke Jim! Sofern ich nichts missverstehe/übersehe, filtert dies nur das zweite Diagramm basierend auf dem ersten. Wie filtere ich das zweite Diagramm zusätzlich zum ersten?
dh Ich möchte, dass das zweite Diagramm basierend auf dem ersten gefiltert wird, aber zusätzlich möchte ich nur eine Teilmenge der Daten im ersten Filter.
Was ich effektiv möchte, ist "Where(:ToolID == pTools[j]);" zum Variabilitätsdiagramm, aber wenn ich dies tue, wird die Data Filter Source Box (oder in meinem Fall der lokale Datenfilter) vollständig ignoriert. Ich habe tatsächlich lange versucht, herauszufinden, was ich mit der Datenfilter-Quellbox falsch gemacht habe, nur um festzustellen, dass es funktioniert, nachdem ich die obige „Wo“-Linie aus den Variabilitätsdiagrammen entfernt habe.
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIch glaube, ich verstehe, was Sie wollen.Hier ist ein Beispiel, das direkt aus dem Scripting-Index entnommen wurde
Hilfe==>Scripting-Index==>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 )
)
)
)
)
);
Basierend auf Ihrer „Angeklickt auf“-Auswahl in einem Diagramm filtert es ein anderes Diagramm
Kontextfeld für verschachtelte/mehrere Datenfilter::edit:: Fügte einen Kommentar in den Code ein und fügte einen Screenshot hinzu, um die Visualisierung zu erleichtern.
Ist es möglich, verschachtelte Filterkontextfelder zu erstellen oder etwas zu generieren, das effektiv dasselbe tut? Grundsätzlich möchte ich eine Reihe von übergeordneten Filtern, die für alle Diagramme in einem Bericht gelten. Die Berichte innerhalb dieses Diagramms benötigen ihre eigenen speziellen Filter, um die angezeigten Daten einzuschränken.
Ich habe einen interaktiven Bericht wie folgt angelegt:
(1) Ein in zwei Spalten unterteiltes H-Listenfeld.
(A) Die erste Spalte enthält eine Reihe von Filtern, die für alles in der zweiten Spalte gelten.
(B) Die zweite Spalte enthält eine Registerkartenbox mit mehreren Registerkarten für verschiedene "Werkzeugtypen".
(i) Jede Registerkarte enthält ein h-Listenfeld mit einer Spalte von Variabilitätsdiagrammen für jedes "Werkzeug" eines bestimmten Typs. Jede Spalte benötigt einen eigenen Filter, um einzuschränken, welches "Werkzeug" angezeigt wird.
(a) Dieser Filter ist basierend auf einer Liste fest codiert, aber die VarCharts müssen basierend auf den Filtern in (A) aktualisiert werden.
Was ich finde ist, dass wenn ich ein where() in das Variabilitätsdiagramm setze, es die Filter in (A) ignoriert. Ich habe dann versucht, Filterkontextfelder zu verschachteln, aber das scheint nicht zu funktionieren. Die neuen Filter werden angezeigt, aber nur der übergeordnete Filter tut tatsächlich etwas.
Ich habe versucht, eine abgespeckte/anonymisierte Version meines Codes zu erstellen, daher kann es zu Tippfehlern kommen:
myRootPath = "C:\Log_Testing\"; myLogPath = myRootPath; myReportPath = myRootPath || "Prüfbericht\"; mypath = myRootPath || "Protokolle\"; // I zu plottende Werkzeuge // Format: ToolID iTools = {"i1", "i5"}; // P-Werkzeuge zum Plotten // Format: ToolID pTools = {"p1", "p2"}; Aktuelles Verzeichnis festlegen ( mypath ); mainDt = Open( myLogPath || "Log.jmp" ); Stapelinteraktiv( 1 ); //Batch-Modus dt_name = mainDt << get name(); dt_path = myLogPath; mainDt << Auswahl löschen; filterContextBox = Datenfilter-Kontextfeld(); spcWin = New Window( dt_name || "_VarCharts", filterContextBox ); filterBox = H Listenfeld( mainDt << Datenfilter( //Bedingt, Lokal, Filter hinzufügen( column( :WW,
), Anzeige( :WW, Blockanzeige ), Anzeige(
, Blockanzeige ), ), Modus( Select( 0 ), Show( 1 ), Include( 1 ) ), ) ); filterContextBox << Append( filterbox ); filterBox << Append( tb = Tab Box() ); tb << Add( "P", hPTab = H Listenfeld() ); tb << Add( "I", hITab = H Listenfeld() ); numPTools = N Elemente ( pTools ); numITools = N Elemente ( iTools ); //P-Plots erstellen For( j = 1, j <= numPTools, j++, hPTab << Append( vToolBox = V List Box() ); vToolBox << Append( toolTab = Outline Box( pTools[j] ) ); ycol = "Variablenname"; parseName = "Variabilitätsdiagramm für " || ycol; toolTab << append( NewChart = Variability Chart( 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 ),
/*Wenn die nächste Zeile nicht auskommentiert ist, ignoriert sie den lokalen Filter und verwendet nur diesen. Ich brauche beides. */
Where( :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" ) } ) ) ) ); );
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIch habe mit dem Code herumgespielt, aber es ist mir nicht gelungen, ihn so zum Laufen zu bringen, wie Sie es angegeben haben.
Entschuldigung, vielleicht hat ein anderes Community-Mitglied eine Idee.
Hier ist ein Beispiel, bei dem zwei unabhängige Pfade aus einem einzelnen Auswahldiagramm stammen. Ich denke, das kommt Ihren Wünschen nahe
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 ) )
)
)
)
)
//)
)
)
)
)
);Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterDanke Jim! Ich hatte mir etwas Ähnliches ausgedacht. Ich habe versucht, eine Möglichkeit zu finden, die nicht ausgewählten Punkte auszublenden/zu verkleinern, aber es sieht nicht so aus, als wäre das eine Möglichkeit.
Ich glaube, ich bin auch zu einem ganz anderen Weg gekommen, dies zu tun: indem ich „by()“ verwende und jede ToolID mit einem separaten SendToGroup() durchlaufe. Dann ist es etwas komplizierter, die Titel festzulegen, aber ich werde die Ergebnisse veröffentlichen, sobald ich es herausgefunden habe. Hoffentlich hilft es jemandem in der Zukunft, wie alle Ihre Beiträge es getan haben!Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIch habe dem, was Sie beschreiben, zwei Beispiele für ähnliche Layouts beigefügt:
SFCrimeNestedFilter.jsl zeigt, wie die Datenfilter-Kontextbox verschachtelt wird, um ein kaskadierendes/hierarchisches Verhalten in den Filtern zu erzielen.Dieser Ansatz funktioniert in JMP 10+, obwohl die Syntax, die ich für das Tab-Feld verwende, JMP 13+ ist.
SFCrimeFilterWithWhere.jsl ersetzt den inneren Filter durch eine Where()-Klausel für jeden Bericht.Diese Art von Layout funktioniert in JMP 14, funktionierte jedoch nicht in früheren Versionen.Das Problem besteht darin, dass der Filter die vollständige Tabelle verwendet, während der Bericht eine Teiltabelle verwendet.
Ich hoffe das hilft!
Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterDas scheint genau das zu sein, was ich suche! Vielen Dank! Es sieht also so aus, als ob mein Fehler darin bestand, überhaupt Quellboxen zu verwenden?Betreff: Kontextfeld für verschachtelte/mehrere DatenfilterIn Jims Beispielen ist die Data Filter Source Box genau das, was benötigt wird, um ein JMP-Diagramm zum Filtern eines anderen zu verwenden.Ich habe in Ihrem ursprünglichen Skript kein Datenfilter-Quellfeld gesehen. Ich denke, das Hauptproblem war die Verwendung der Where()-Klausel (Teilmengentabelle) mit einem Filter für die übergeordnete Tabelle.
Die Datenfilter-Quellbox muss lediglich eine Plattform als Filter verwenden, da wir im Gegensatz zum integrierten Datenfilterobjekt nicht ableiten können, wie das Filterverhalten aussehen soll.