L'obiettivo dello snippet riportato di seguito è tracciare il grafico della corrente rispetto al tempo . Ho più dispositivi differenziati per Serial .
Su GraphBuilder, raggruppo il Serial per "pagine". Poiché ho un numero variabile di dispositivi, ho un numero variabile di pagine.
Nell'impostare la scala, ho una riga di "invio" per numero di pagine (dispositivo), quindi di seguito ho quattro righe di spedizione per aggiornare i quattro grafici per ciascun dispositivo.
Come posso implementare le stesse impostazioni di scala e grafico su tutte le pagine di GraphBuilder? Grazie!
//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);})
);
);
Molto probabilmente potresti usare Eval(EvalExpr()) con Expr() Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute , ma proverei a risolverlo molto probabilmente con XPath (o un metodo simile senza XPath) perché è più flessibile e più facile da modificare (secondo me).
Di seguito è riportato un esempio con la tabella Big Class che utilizza :age come colonna della pagina e modifica dell'asse x (:weight) min, max e inc. Ha anche alcune stampe di debug e per qualche motivo ci sono 7 scalebox ma solo 6 gruppi
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);