If-Anweisung im Graph Builder für die SendToReport-FunktionalitätHallo,
Ich möchte die Y-Achse des Diagramms nur ändern können, wenn die Y-Achse eine bestimmte Spalte ist (z. B. Fehler). Aber es sieht so aus, als ob der Graphbuilder das darin enthaltene „If“ nicht erkennt. Dies funktioniert jedoch gut, wenn ich die if-Anweisung nicht verwende. Aber ich möchte dieselbe Diagrammfunktion für alle Arten von Diagrammen verwenden können.
graph_func = function({stackdt,title},{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables(
X( :names ),
Y( as column(title) ),
Group X( :Type ),
Overlay( :GROUPs )
),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Type),
Display( :Type, Size( 160, 30 ), List Display )
) ),
if(contains(title,"error"),
SendToReport(
Dispatch(
{},
title,
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 10 ), Min( 0.00001 ), Max( 0.03 ),
Inc( 1 ), Minor Ticks( 1 )}
)
) , ) );
return(gb);
);Betreff: If-Anweisung im Graph Builder für die SendToReport-Funktionalität
Aufgrund der Datenschutzrichtlinie des Unternehmens kann die JSL oder das gesamte Diagramm nicht wirklich bereitgestellt werden, aber so sieht die X-Achse aus. Es gibt 3 Gruppen auf der Gruppen-Y-Achse und Fehler auf der Y-Achse. Ich möchte in der Lage sein, alle Zwischenpunkte auf der Y-Achse zu sehen und nicht nur Min und Max, so wie es ist.
Wenn ich eine andere Gruppe nach Seite aufteile, gilt dies außerdem nur für das erste Diagramm und nicht für das folgende.
Betreff: If-Anweisung im Graph Builder für die SendToReport-FunktionalitätKönnten Sie bitte Ihre JSL und ein Bild der Anzeigeausgabe bereitstellen?
Betreff: If-Anweisung im Graph Builder für die SendToReport-FunktionalitätDanke für Ihre Antwort. Ich habe die zweite Lösung ausprobiert, da sie für das, was ich mache, einfach aussah. Es funktioniert, aber die Y-Achse hat jetzt nur noch 2 Punkte, nämlich Min und Max. Wie kann ich dafür sorgen, dass die Skala auf Yaxis angezeigt wird?Betreff: If-Anweisung im Graph Builder für die SendToReport-FunktionalitätEine einfachere Möglichkeit hierfür besteht darin, Nachrichten an die von Graph Builder erstellten Anzeigeobjekte zu übergeben.Die Nachrichten können übergeben werden, nachdem das Diagramm erstellt wurde.Alle diese Nachrichten sind im Scripting Index dokumentiert
Hilfe==>Skriptindex
und suchen Sie dann nach dem AxisBox-Objekt
Hier ist eine Änderung an Ihrem Code, die funktionieren sollte
graph_func = Function( {stackdt, title},
{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables( X( :names ), Y( As Column( title ) ), Group X( :Type ), Overlay( :GROUPs ) ),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter( Add Filter( columns( :Type ), Display( :Type, Size( 160, 30 ), List Display ) ) )
);
If( Contains( title, "error" ),
report(gb)[AxisBox(2)] << min(0.00001) << Max( 0.03 ) << Inc( 1 ) <<MINOR ticks=""></MINOR>Betreff: If-Anweisung im Graph Builder für die SendToReport-FunktionalitätWie ich bereits in anderen Diskussionen erwähnt habe, ist Send To Report() dafür gedacht, dass JMP ein Skript für Sie speichern und alle von Ihnen vorgenommenen Anpassungen erfassen kann. Es gibt bessere Möglichkeiten, Ihr Fenster anzupassen, wenn Sie ein Skript schreiben. Zum Beispiel,
gb = dt << Graph Builder( /* usual plot arguments */ );
If( error plot,
Report( gb )[AxisBox(1)] << Min( 0 ) << Max( 10 ) << Inc( 1 );
);
Ich würde Graph Builder mit der Standardanpassung starten (nicht für Plotfehler). Ich hätte eine Möglichkeit, die Ausnahme (Plotfehler) zu kennzeichnen und die Funktion If() zu verwenden, um zu bestimmen, ob Nachrichten an das Objekt gesendet werden sollen. Im obigen Beispiel könnte das Fehlerdiagrammargument ein Flag (boolesche Variable) oder ein Ausdruck sein, der „true“ zurückgibt, wenn Sie die Fehler grafisch darstellen. Die Nachrichten werden in diesem Fall an die vertikale Achse gesendet, um den Maßstab zu ändern. Sie können diese Abbildung verwenden, um jede beliebige Anpassung zu erstellen.