Das Ziel des folgenden Snippets besteht darin, Strom im Verhältnis zur Zeit darzustellen. Ich habe mehrere Geräte, die nach Seriennummer unterschieden werden.
In GraphBuilder gruppiere ich die Seriennummer nach „Seiten“. Da ich eine variable Anzahl von Geräten habe, habe ich auch eine variable Anzahl von Seiten.
Beim Festlegen des Maßstabs habe ich eine „Versand“-Zeile pro Seitenzahl (Gerät) – unten habe ich also vier Versandzeilen, um die vier Diagramme für jedes Gerät zu aktualisieren.
Wie kann ich auf allen GraphBuilder-Seiten dieselben Skalen- und Diagrammeinstellungen implementieren? Danke!
//t0 is minimum time
//tn is maximum time
Graph Builder(
Size(700, 5000),
Show Control Panel(0),
Variables(
X(:Column(Time)),
Y(:Column(Current)),
Page(:Serial)
),
Elements(
Points(X, Y(2), Legend(1)),
Points(X, Y(1), Legend(2))
),
SendToReport(
Dispatch({}, "Time (H)", ScaleBox(2),
{Min(t0), Max(tn), Inc(inc);}),
Dispatch({}, "Time (H)", ScaleBox(3),
{Min(t0), Max(tn), Inc(inc);}),
Dispatch({}, "Time (H)", ScaleBox(4),
{Min(t0), Max(tn), Inc(inc);}),
Dispatch({}, "Time (H)", ScaleBox(5),
{Min(t0), Max(tn), Inc(inc);})
);
);
Sie könnten höchstwahrscheinlich Eval(EvalExpr()) mit Expr() verwenden Fügen Sie mit Eval Insert, Eval Expr, Parse und Substitute einen Ausdruck in einen anderen ein , aber ich würde versuchen, dies höchstwahrscheinlich mit XPath (oder einer ähnlichen Methode ohne XPath) zu lösen, da dies flexibler und einfacher zu ändern ist (meiner Meinung nach).
Unten ist ein Beispiel mit einer Big Class-Tabelle mit :age als Seitenspalte und Änderung der x-Achse (:weight) min, max und inc. Es hat auch einige Debug-Drucke und aus irgendeinem Grund gibt es 7 Scaleboxen, aber nur 6 Gruppen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(529, 2957),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Page(:age)),
Elements(Points(X, Y, Legend(7)), Smoother(X, Y, Legend(8)))
);
Summarize(dt, uniq_groups = by(:age));
Show(N Items(uniq_groups));
rep = Report(gb);
//Show(rep << Get XML);
scale_boxes = rep << XPath("//ScaleBox[@charID='weight']");
Show(N Items(scale_boxes)); //this has one extra when compared to groups, not sure (yet) why
scale_boxes << Min(10);
scale_boxes << Max(200);
scale_boxes << Inc(5);