Bedingtes bivariates Anpassungsskript basierend auf „Group By Column“Hallo, ich bin relativ neu bei JMP und verwende die Plattform für bivariate Diagramme, um eine Liste bivariater Diagramme aus einem Datensatz zu generieren. Ich habe angefangen, ein automatisch generiertes JSL-Skript zu verwenden, um allen Diagrammen identische Achsen- und Legendeneinstellungen hinzuzufügen, wie unten zu sehen:
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Wie Sie oben sehen können, gruppiere ich den Datensatz nach der Spalte :Checker Name. Ich wollte dieses Skript jedoch erweitern, indem ich auch transparente Rect()-Grafikobjekte hinzufüge, um akzeptable Bereiche für jedes der Streudiagramme zu erstellen. Die Abmessungen und die Position dieser Rect()-Objekte variieren jedoch je nach dem bivariaten Diagramm, in dem sie dargestellt werden. Kurz gesagt, ich muss einen Schlüssel von :Checker Name zu Rect-Größenvariablen erstellen, der je nach bivariatem Diagramm im Satz korrekt angewendet wird. Ist dies etwas, das sich einfach/plausibel in das oben vorhandene vorgenerierte Skript integrieren lässt?
Danke schön!
Automatisierung und SkriptingGrundlegende Datenanalyse und ModellierungMassenanpassungBetreff: Bedingtes bivariates Anpassungsskript basierend auf „Gruppieren nach Spalte“Sie können versuchen, es interaktiv in JMP zu tun (Sie müssen höchstwahrscheinlich die Rect()-Werte für jedes Streudiagramm fest codieren). Ich würde vorschlagen, JSL mit einer Schleife zu verwenden.
Betreff: Bedingtes bivariates Anpassungsskript basierend auf „Gruppieren nach Spalte“Wie würden Sie mir empfehlen, die bivariate Funktion mit By( :Checker Name ) in eine Schleife von bivariaten Funktionen mit eindeutigen Checker-Namen aufzuteilen?
-Jacob
Betreff: Bedingtes bivariates Anpassungsskript basierend auf „Gruppieren nach Spalte“Speichern Sie die Liste der Referenzen in einer Variablen: biv = Bivariate( ... ). Sie können über die Liste iterieren. Sie können entweder die Gliederungsfelder abfragen, um die Variablenebene „By“ zu bestimmen, oder die Funktion Summarize() verwenden, um eine Liste der Gruppen zu erhalten. Die Reihenfolge bleibt gleich.
Betreff: Bedingtes bivariates Anpassungsskript basierend auf „Gruppieren nach Spalte“Ich überlege, ein assoziatives Array zu verwenden, um jedem möglichen Schlüssel in der Spalte „Checker Name“ ein Rect-Objekt zuzuweisen. Können Sie ein Beispiel für die Iteration über eine Liste von Gliederungsfeldern und das Hinzufügen eines Rect()-Objekts zu jedem Feld angeben? Ich bin auch mit der Summarize-Funktion nicht vertraut.
Betreff: Bedingtes bivariates Anpassungsskript basierend auf „Gruppieren nach Spalte“Ich gehe davon aus, dass Sie JMP18 verwenden. Wenn Sie By verwenden, erhalten Sie eine Liste der Plattformen zurück und können diese dann durchlaufen. Dann müssen Sie nur noch herausfinden, wie Sie den Titel usw. erhalten (oder Sie können Summarize verwenden, und in diesem Fall würde ich die Referenzliste etwas anders erstellen). Wenn es schwierig ist, die Schleife herauszufinden, können Sie zunächst einfach eine einzelne bivariate Plattform erstellen und sie zum Laufen bringen und dann auf Schleifen erweitern.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
