Hallo zusammen,
Ausführen von JMP/JMP Pro auf Windows 11-Maschinen.
Ich bin neugierig, wie ich ein ganz bestimmtes Problem umgehen kann – und zwar automatisch (nicht manuell).Als Beispiel verwende ich die Air.jmp-Beispieldatentabelle, um das vorliegende Problem zu veranschaulichen. Ich habe eine Kopie der Dateien mit dem Skript angehängt, um das Problem zu veranschaulichen.
Ich habe eine Datentabelle, in der ich täglich (manchmal wöchentlich) Daten hinzufüge, und ich habe ein integriertes Skript in der Datentabelle, um Daten im Vergleich zum Datum darzustellen. Um dies nachzuahmen, habe ich die Air.jmp-Datentabelle in zwei Hälften geteilt und das Graph Builder-Diagramm erstellt und dann das „Neue“ (zweite Hälfte der Daten) mit der ersten Hälfte der anderen Tabelle verkettet und das Skript erneut ausgeführt.
Idealerweise würde ich gerne eine Ausgabe erhalten, in der die X-Achse des Graph Builder-Datums automatisch auf das aktuellste Datum skaliert wird, etwa so:

Stattdessen erhalte ich ein Diagramm, das nur auf den Wert aktualisiert wird, den ich hatte, als ich die letzte Version dieses Diagrammerstellungsskripts in der Datentabelle gespeichert habe. Die Ausgabe sieht also so aus:

Dies passiert nicht, wenn Sie nur die Datenpunkte grafisch darstellen und die Schrittweite der Achse nicht ändern. Das Standardinkrement auf der Achse für diesen Datensatz (die erste Hälfte) beträgt 2 Jahre. Nachdem Sie die zweite Hälfte der Daten hinzugefügt und das Skript in der Datentabelle erneut ausgeführt haben, wird der Standardwert auf 5 Jahre zurückgesetzt und alle Daten werden grafisch dargestellt.
Wenn Sie jedoch das Standardinkrement beispielsweise auf 1 Monat ändern und das Skript in der Datentabelle (erste Hälfte) speichern, dann die neuen Daten hinzufügen und das Skript erneut ausführen, bleiben die Achseneinstellungen dieselben wie im Original Skript – es wird nicht aktualisiert, um die neuen Daten einzuschließen. Der große Unterschied im Skript ist der SendToReport-Befehl:
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Min( 1597574016 ), Max( 1925078400 ), Interval( "Month" ), Inc( 1 ),
Minor Ticks( 1 )}
)
)In diesem Befehl gibt es die Datumseinstellungen Min() und Max(), die durch den vorhandenen Datumsbereich der ursprünglichen Datentabelle geändert werden. Ich bin mir nicht sicher, warum diese Einschränkung besteht und nicht aktualisiert wird, um neue Daten widerzuspiegeln, die einer Datentabelle hinzugefügt werden und das Skript erneut ausgeführt wird.
Gibt es eine Möglichkeit, dies zu umgehen und dabei das Monatsintervall beizubehalten und auch die x-Achse zu verschachteln, sodass die Monate auch in Jahren gruppiert sind? Nachdem ich der Tabelle neue Daten hinzugefügt und das Skript erneut ausgeführt habe, möchte ich, dass das neue Diagramm die Min()- und Max()-Einstellungen der neuesten Datentabelle verwendet, nicht die des Originals.
Hoffentlich gibt es dafür eine einfache Lösung. Andernfalls denke ich, dass ich eine Wunschliste mit der Bitte einreichen werde, dies zu ändern, damit die Min()- und Max()-Eingaben für die Achse automatisch durch die aktuellen Werte in der relevanten Spalte der Datentabelle aktualisiert werden.
Vielen Dank im Voraus für alle Gedanken/Feedback!,
DS
Hallo @jthi ,
Danke, das hat es geschafft! Ich bevorzuge die Verwendung von Expr(Col Min( )) und Expr(Col Max( )) in den Min()- und Max()-Argumenten für den Graph Builder. Und netterweise erledigt JMP für Sie das Auffüllen an beiden Enden des Diagramms, das irgendwie entsprechend der Zeitskala Ihres Diagramms skaliert werden muss, da es bei diesem Datensatz den Anschein hat, dass es 366 Tage auffüllt.
Danke für die schnelle Antwort!,
DS
Ich denke, wenn Sie mit leeren Stellen im Plot zufrieden sind, könnten Sie einfach Min und Max aus dem Sendtoreport entfernen.
Graph Builder(
Size(522, 456),
Show Control Panel(0),
Graph Spacing(4),
Variables(X(:date), Y(:Ozone Concentration)),
Elements(
Points(X, Y, Legend(3)),
Smoother(
X,
Y,
Legend(4),
Lambda(0.0000231899600250505),
Confidence of Fit(1)
)
),
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Interval("Month"), Inc(1),
Minor Ticks(1), Label Row Nesting(2)}
)
)
)

Eine andere Möglichkeit besteht darin, sie mit einem Skript zu berechnen und dann damit hinzuzufügen (und Sie müssen möglicherweise trotzdem eine Neuskalierung durchführen, wenn JMP beschließt, leere Werte hinzuzufügen).
Eval(EvalExpr(
Current Data Table() << Graph Builder(
Size(522, 456),
Show Control Panel(0),
Graph Spacing(4),
Variables(X(:date), Y(:Ozone Concentration)),
Elements(
Points(X, Y, Legend(3)),
Smoother(
X,
Y,
Legend(4),
Lambda(0.0000231899600250505),
Confidence of Fit(1)
)
),
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Min(Expr(Col Min(:date))), Max(Col Max(col max(:date))), Interval("Month"), Inc(1),
Minor Ticks(1), Label Row Nesting(2)}
)
)
)
));
