Graph Builder: X Kategorien ohne Daten ausblendenHallo zusammen,
Ich habe eine Tabelle mit einer Gruppierungsspalte und mehreren Antwortvariablen.
New Table( "Test",
Add Rows( 7 ),
New Column( "GROUP",
Character,
"Nominal",
Set Values( {"a", "b", "c", "d", "e", "f", "g"} )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, ., 6, ., 4, ., 2] )
),
New Column( "Y 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 6, 2, 3, ., ., .] ),
Set Display Width( 49 )
)
)Ich möchte ein Balkendiagramm mit einem Spaltenumschalter erstellen.
Graph Builder(
Size( 527, 448 ),
Show Control Panel( 0 ),
Variables(
X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Y )
),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} )
)Mein Problem ist, dass ich keine Ebenen ohne Daten anzeigen möchte. Mit anderen Worten, ich möchte die Ebenen „b“, „d“ und „f“ für Y und die Ebenen „e“, „f“, „g“ für Y2 nicht sehen.

Ich habe versucht, eine „where“-Klausel zu verwenden, aber leider wird diese vom Column Switcher nicht berücksichtigt.
Haben Sie eine Idee, wie wir das machen könnten?
Dank im Voraus!
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @geoffrey_mann ,
Vielen Dank für Ihr Engagement und die zusätzlichen Informationen.
Ich werde damit beginnen, die Funktion bei meinen Kollegen bekannt zu machen, um Stimmen zu erhalten! 

Was das Skript angeht, bevorzuge ich es, die aktuelle Tabelle nicht zu beeinflussen, daher halte ich den lokalen Datenfilter für eine gute Option! Ich werde diese Möglichkeit genauer untersuchen.
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @anne_sa
Ich bin so froh, dass das geholfen hat. Das ist etwas, was ich schon seit einiger Zeit tun wollte, und Sie haben mir die Motivation dazu gegeben. 

Außerdem stimme ich Ihnen zu und @vince_faller dass ein Listener oder eine Möglichkeit zum benutzerdefinierten Verhalten rund um den Spaltenumschalter im Allgemeinen für diejenigen nützlich wäre, die ihre eigenen Add-Ins programmieren oder das Verhalten ändern. Wir machen das ständig in JMP Clinical und JMP Genomics, weshalb ich es lobend erwähnt habe @kelci_miclaus Und @drewfoglia für den Code, den ich ausgeliehen habe.
Wenn wir nur einen JMP-Produktmanager kennen würden, der dabei helfen könnte, dies zu erreichen. 
Bitte stimmen Sie beide für die Funktion, sie hilft bei der Begründung.
Was die endgültigen Änderungen betrifft, sollten Sie die Kontrolle über den von Ihnen geschriebenen Wrapper-Code haben. Die API-Aufrufe sollen lediglich die X- und Y-Variablen ersetzen. Ich werde diese Funktionen weiterhin erweitern, um Programmierern dabei zu helfen, das Wrapping von GraphBuilder zu vereinfachen, damit sie Add-Ins schneller erstellen können. Was ich hier sagen möchte, ist, nur Funktionen hinzuzufügen, um GraphBuilder in der API-Datei zu aktualisieren, sodass jede von Ihnen verwendete „Treiber“-Datei das Auswahlverhalten aufweist. Beachten Sie, dass ich dt << clearrowstates(); Rufen Sie unterhalb der „ReplaceGB...“-Aufrufe auf, um die Änderung von Zeilenzuständen in der Tabelle an einer Stelle zu organisieren. Beachten Sie außerdem, dass dieser Code die Zeilenzustände der Hauptdatentabelle ändert, anstatt einen lokalen Filter zum Ändern des GraphBuilder-Berichts zu verwenden. Möglicherweise möchten Sie Ihren Ansatz ändern, wenn Sie mehrere Berichte der Datentabelle wünschen. Dies sind jedoch nur Notizen und dienen als zusätzliche Informationen für zukünftige Apps, die Sie möglicherweise mit JMP erstellen.
Beachten Sie die Clearrowstates in Ihrer Treiberdatei:
dt << clearrowstates();
newvarname = lb<<GETSELECTED></GETSELECTED>
Basierend auf meinem „vereinfachten“ Verständnis dessen, was Sie tun möchten, empfehle ich Ihnen, einfach dt << clearrowstates(); zu ersetzen. mit dt << ausschließen (); Lassen Sie mich wissen, ob Sie dieses Verhalten bevorzugen oder ob es komplexer ist.
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenich stimme dir vollkommen zu @vince_faller , es wäre ein sehr schönes Feature 
Ich denke, ich werde es zur JMP-Wunschliste hinzufügen!
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenVielen Dank für diese Skripte @geoffrey_mann
Es ist definitiv sauberer als das, was ich gemacht habe!
Nur eines möchte ich anpassen: Jedes Mal, wenn wir im Listenfeld eine neue Variable auswählen, wird der Zeilenstatus zurückgesetzt. Wenn also einige Punkte markiert/ausgeschlossen/farbig markiert wurden, gehen diese Informationen verloren, was ärgerlich sein kann.
Ansonsten entspricht es meinen Erwartungen, also nochmals vielen Dank!
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenEs wäre cool, wenn der Spaltenschalter eine <Betreff: Graph Builder: X-Kategorien ohne Daten ausblenden
Hallo nochmal @anne_sa ,
Tut mir leid für die Verzögerung, ich hatte tatsächlich ein paar Tage lang die Grippe und geriet etwas in Verzug.
Ich habe zwei Dateien angehängt. Die erste JSL-Datei (Beispielskript zum Ändern von Zeilenzuständen.jsl) ist die Treiberdatei und der Pfad in der zweiten Zeile ist der vollständige Pfad des Speicherorts, an dem Sie die zweite Datei (GraphBuilderJSLAPI.jsl) platzieren.
//Include script to modify GraphBuilder with some special functions defined
include(ConvertFilePath("/Users/gemann/Projects/Prototypes/JSLClasses/GraphBuilderJSLAPI.jsl", absolute, windows));
//Create a sample table
dt = New Table( "Test",
Add Rows( 7 ),
New Column( "GROUP",
Character,
"Nominal",
Set Values( {"a", "b", "c", "d", "e", "f", "g"} )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, ., 6, ., 4, ., 2] )
),
New Column( "Y 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 6, 2, 3, ., ., .] ),
Set Display Width( 49 )
)
);
//Add a new window and build a listbox beside a graphbuilder
New Window( "CustomColumnSwitcher Window",
//Start by getting all of the columns in the current datatable
CNames = dt << Get Column Names( Numeric );
Show( CNames );
//User a horizontal layout
HListBox(
//Use a ListBox as the new Column Switcher
lb = List Box(
CNames,
maxSelected(1),
//The next lines specify the script that gets run when an item in listbox is selected
dt << clearrowstates();
newvarname = lb<<GETSELECTED></GETSELECTED>
Viel Glück und lass es mich wissen, wenn du irgendwelche Probleme hast. Natürlich sind diese Dateien nicht vollständig getestet!!! 

Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @geoffrey_mann ,
Ich habe etwas geschrieben, um grundsätzlich den Spaltenumschalter zu aktualisieren und die Achseneinstellung zu ändern (wie von vorgeschlagen). @julianisch ) jedes Mal, wenn wir eine neue Variable auswählen. Da es jedoch möglicherweise nicht sehr effizient ist, bin ich natürlich sehr an Ihrer Lösung interessiert!
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo Anne,
Ich wollte noch einmal bei Ihnen nachfragen, ob Sie eine Codierungslösung für Ihr Problem gefunden haben. Es hat eine Weile gedauert, bis ich die Zeit gefunden habe, aber ich habe eine Codierungslösung, falls Sie noch eine benötigen.
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @julianisch !
Ich schätze Ihre Bemühungen, mein Problem zu lösen, sehr! Leider kann die Anzahl der nicht fehlenden Ebenen von Antwortvariable zu Antwortvariable unterschiedlich sein. Ihr letzter Beitrag kann jedoch durchaus für die „Codierungslösung“ verwendet werden. Das Ändern der Achseneinstellungen basierend auf der Ebenennummer ist in der Tat eine gute Möglichkeit, anzuzeigen, was erwartet wird. Ich werde in diese Richtung arbeiten. Vielen Dank für Ihre Hilfe!
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @anne_sa ,
Ich verstehe genau, was du meinst. Es könnte wirklich darauf hinauslaufen, etwas Benutzerdefiniertes zu programmieren, aber lassen Sie mich noch einen interaktiven Versuch unternehmen. Gibt es für jedes Y immer nur vier (wenn auch unterschiedliche) Gruppenebenen? Wenn ja, dann ist hier ein möglicher Hack: Graph Builder behält die X-Achse beim Spaltenwechsel bei, und da Ihre Ebenen aufsteigend sortiert sind (also leere Ebenen immer am Ende stehen), könnten wir die Achse so anpassen, dass nur vier Ebenen angezeigt werden . Sie können dies in den Achseneinstellungen tun (Rechtsklick auf die Achse > Achseneinstellungen) oder indem Sie einfach das Ende der Achse herausziehen, bis die fehlenden Ebenen ausgeblendet sind.
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ), Y( :Y ) ),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} ),
SendToReport( Dispatch( {}, "GROUP", ScaleBox, {Min( -0.5 ), Max( 3.5 ), Inc( 1 ), Minor Ticks( 0 )} ) )
);

Vielleicht eine mögliche Lösung in Ihrem Fall?
@julianisch
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenDanke @julianisch für diesen Vorschlag! Tatsächlich können nur Ebenen mit Daten angezeigt werden.
Das einzige Problem (aber vielleicht verlange ich zu viel) ist, dass wir die Verbindung zwischen den Zeilen verlieren. Wenn ich beispielsweise für Y die Ebene „a“ auswähle und den entsprechenden Wert für Y2 sehen möchte, wird nichts hervorgehoben, wenn ich Y2 mit dem lokalen Datenfilter auswähle.
Vielleicht ist die Codierung des erwarteten Verhaltens die Lösung ...
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo @anne_sa ,
Wie Sie herausgefunden haben, beobachtet Graph Builder diese Kategorien Ihrer Gruppierungsvariablen und besteht darauf, sie grafisch darzustellen (was normalerweise eine gute Sache ist), da es davon ausgeht, dass Sie einen Wert in ihnen finden, da Sie sie in Ihrer Tabelle behalten haben. In Ihrem Fall mit dem Spaltenumschalter ist es nicht so einfach, nur diese Zeilen zu löschen, da für Ihre anderen Spalten bereits Daten vorhanden sind. Eine Lösung besteht darin, Ihre Daten so umzustrukturieren, dass die fehlenden Zeilen entfernt werden können. Ich würde dies tun, indem ich Folgendes stapele:
Tabellen > Stapel
Data Table( "Test" ) << Stack(
columns( :Y, :Y 2 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
Dadurch wird eine Tabelle wie die folgende zurückgegeben:

Entfernen Sie die fehlenden Werte, indem Sie mit der rechten Maustaste auf eine der fehlenden Zellen klicken und die entsprechenden Werte auswählen. Löschen Sie dann diese Zeilen. Dadurch wird die angehängte Tabelle zurückgegeben. Erstellen Sie nun Ihr Diagramm, verwenden Sie jedoch einen lokalen Datenfilter anstelle eines Spaltenumschalters, um auszuwählen, was zuvor eine Antwort aus Ihrer Beschriftungsspalte war:
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :GROUP ), Y( :Data ) ),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == "Y" ),
Display( :Label, Size( 160, 17 ) )
)
)
);

Da keine Zeilen fehlen, zeigt Graph Builder nur die Gruppenebenen an, die mit Daten gefüllt sind.Sie können dies natürlich auf eine beliebige Anzahl von Y-Ebenen verallgemeinern – stapeln Sie einfach alle im ersten Schritt.
Ich hoffe das hilft!
@julianisch
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo Anne,
Ich sehe jetzt Ihr Problem und beschäftige mich immer noch damit. Ich glaube, dass hierfür ein wenig Codierung erforderlich ist.Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenDanke für deine Antwort @geoffrey_mann
Leider ist es nicht genau das, was ich gerne hätte, denn wenn ich mit dem Spaltenumschalter eine neue Spalte auswähle, basiert der lokale Datenfilter immer noch auf Y.
Natürlich ist es möglich, den lokalen Datenfilter manuell zu ändern, aber da ich eine recht große Anzahl an Variablen haben kann, wäre es großartig, wenn es eine automatische Möglichkeit gäbe, dies zu tun 
Betreff: Graph Builder: X-Kategorien ohne Daten ausblendenHallo Anne,
Ihre Vorstellung, dass Sie eine „Where“-Klausel oder vielmehr einen Filter benötigen, ist richtig. Versuchen Sie, die folgende Zeile zu Ihrem Graphbuilder-Skript hinzuzufügen:
Local Data Filter( Add Filter( columns( :Y ), Where( :Y >= 2 & :Y <= 7 ) ) )
Ich hoffe, dass ein lokaler Datenfilter in Ordnung ist?
Graph Builder(
Size( 527, 448 ),
Show Control Panel( 0 ),
Variables(
X( :GROUP, Order By( :Y, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Y )
),
Elements( Bar( X, Y, Legend( 4 ) ) ),
Column Switcher( :Y, {:Y, :Y 2} ),
Local Data Filter( Add Filter( columns( :Y ), Where( :Y >= 2 & :Y <= 7 ) ) )
);
Betreff: Graph Builder: X Kategorien ohne Daten ausblendenEs ist zwar ein älterer Beitrag, aber vielleicht hilft er trotzdem weiter:
Zusätzlich können Sie einen lokalen Datenfilter mit der Option "fehlende Werte auswählen" und "umkehren" für das jeweilige Y verwenden.
Local Data Filter(
Inverse( 1 ),
Add Filter( columns( :Y1, :Y2 ), Select Missing( :Y2 ) )
),
Column Switcher( :Y2, {:Y1, :Y2, :Y3} )
Zusätzlich könnten Sie ein Ereignis hinzufügen, das beim Auswählen einer anderen Ebene des Spaltenumschalters ausgelöst wird und dann die Filtereinstellung des lokalen Datenumschalters für alle relevanten Y-Variablen ändert. Das mag etwas umständlich erscheinen, könnte aber funktionieren.
Betreff: Graph Builder: X Kategorien ohne Daten ausblendenHallo @martindemel ,
Vielen Dank für Ihre Nachricht. Auch wenn der Beitrag schon etwas älter ist, ist es immer wieder schön, verschiedene Wege zum selben Ziel zu entdecken.