So fügen Sie mithilfe von JSL dynamisch Elementanweisungen für ein Diagramm hinzuHallo Leute, ich bin noch ziemlich neu bei JMP und JSL, aber mit Programmieren schon ziemlich vertraut. Ich versuche, ein JSL-Skript zu erstellen, das eine Liste von Parameternamen (die ich im Array „PlotVars“ definiere) in separaten Plots im selben Diagramm darstellt. Das Skript soll unabhängig von der Anzahl der in diesem Array definierten Parameter funktionieren (falls ich bei jeder Verwendung Parameter hinzufügen oder entfernen möchte). Ich kann mein Skript dazu bringen, dies zu erzeugen (mit dem unten stehenden Code), aber alle Plots verwenden standardmäßig Punkte, und ich möchte, dass sie stattdessen eine Linie verwenden. Mein Verständnis davon ist, mehrere Elementanweisungen für jede Position zu verwenden. Ich glaube, das Problem liegt in meiner zweiten Zeile, in der ich die Variable „var_line“ initialisiere. Wenn ich sie als Expr() initialisiere, werden die Elementanweisungen zwar erzeugt, aber nicht korrekt ausgeführt. Dasselbe gilt, wenn ich sie als Parse() initialisiere. Ich bin aber für alle Lösungsvorschläge offen. Ich verwende JMP 18.
Bearbeiten (jthi): JSL-Formatierung hinzugefügt
var_expr = Expr(
Variables(X(As Column("Start Alignment of " || DataSet_1)))
);
var_line = Expr();//Unable to dymanically add elements to the graph. still unsure why
For(i = 1, i <= N Items(PlotVars), i++,
Insert Into(var_expr, Eval Expr(Y(As Column(PlotVars[Expr(i)] || " of " || DataSet_1), )));
Insert Into(
var_expr,
Eval Expr(Y(As Column(PlotVars[Expr(i)] || " of " || DataSet_2), Position(Expr(i)), ))
);
Insert Into(
var_line,
Eval Expr(Elements(Position(1, Expr(i)), Line(X, Y(1), Y(2)), Legend(4)))
);
);
plot = Substitute(
Expr(
Data Table("Comparison of" || DataSet_1 || "with" || DataSet_2) <<
Graph Builder(Size(809, 629), Show Control Panel(0), vvv, yyy)
),
Expr(vvv), Name Expr(var_expr),
Expr(yyy), Name Expr(test)
);
Eval(plot);
<
var_expr = Expr(Variablen(X( als Spalte("Startausrichtung von " || DataSet_1) )));
var_line = Expr();//Elemente können dem Diagramm nicht dynamisch hinzugefügt werden. Ich bin mir immer noch nicht sicher, warum
für (i=1, i<=N Items(PlotVars),i++,
Einfügen in (var_expr, Eval Expr(Y( als Spalte(PlotVars[expr(i)] || " von " || DataSet_1),)));
Einfügen in (var_expr, Eval Expr(Y( als Spalte(PlotVars[expr(i)] || " von " || DataSet_2), Position(expr(i)),)));
Einfügen in (var_line, Eval Expr (Elemente (Position (1, Ausdruck (i)), Zeile (X, Y (1), Y (2)), Legende (4))));
);
Plot = Ersetzen(
Ausdruck(
Datentabelle( "Vergleich von" || DataSet_1 || "mit" || DataSet_2 ) <<
Graph Builder(
Größe (809, 629),
Systemsteuerung anzeigen( 0 ),
Tourismusbüro,
jjj
)),
Ausdruck(vvv), Name Ausdruck(var_ausdruck),
Ausdruck(yyy), Name Ausdruck(Test)
);
Eval(Diagramm);
>
Automatisierung und SkriptingBetreff: So fügen Sie mithilfe von JSL dynamisch Elementanweisungen für ein Diagramm hinzuWie soll Ihr Diagramm aussehen? Wie sieht das Skript aus, wenn es von JMP erstellt wird? Wie sieht es im Vergleich zu Ihrem Skript aus, das Sie mit JSL erstellen?
Data Table("Comparison of" || DataSet_1 || "with" || DataSet_2) <<
Graph Builder(
Size(809, 629),
Show Control Panel(0),
Variables(
X(As Column("Start Alignment of " || DataSet_1)),
Y(As Column(PlotVars[1] || " of " || DataSet_1)),
Y(As Column(PlotVars[1] || " of " || DataSet_2), Position(1)),
Y(As Column(PlotVars[2] || " of " || DataSet_1)),
Y(As Column(PlotVars[2] || " of " || DataSet_2), Position(2))
),
test
)
Es gibt auch eine Menge Material zu diesem dynamischen Graph Builder. Hier sind einige Scripters Club-Aufzeichnungen: JSL in Graph Builder , Reply All: So skripten Sie dynamische Inhalte für Graph Builder
Betreff: So fügen Sie mithilfe von JSL dynamisch Elementanweisungen für ein Diagramm hinzuDas Skript erstellt die Graphen genau nach meinen Wünschen, allerdings mit der Verwendung von points/smoother in den Elementanweisungen (beachten Sie, dass Variablen entfernt werden, um die Skriptlänge zu verkürzen). Dies ist der Graphencode aus der Skriptausgabe:
Graph Builder(
Size( 809, 629 ),
Show Control Panel( 0 ),
Variables(
...
)
),
Elements(
Position( 1, 1 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 1 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 2 ) )
),
Elements(
Position( 1, 2 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 3 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 4 ) )
),
Elements(
Position( 1, 3 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 5 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 6 ) )
),
Elements(
Position( 1, 4 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 7 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 8 ) )
),
Elements(
Position( 1, 5 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 9 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 10 ) )
)
);
Und ich würde es vorziehen, stattdessen Linien zu verwenden:
Graph Builder(
Size( 696, 590 ),
Show Control Panel( 0 ),
Variables(
...
)
),
Elements( Position( 1, 1 ), Line( X, Y( 1 ), Y( 2 ), Legend( 11 ) ) ),
Elements( Position( 1, 2 ), Line( X, Y( 1 ), Y( 2 ), Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Line( X, Y( 1 ), Y( 2 ), Legend( 13 ) ) ),
Elements( Position( 1, 4 ), Line( X, Y( 1 ), Y( 2 ), Legend( 14 ) ) ),
Elements( Position( 1, 5 ), Line( X, Y( 1 ), Y( 2 ), Legend( 15 ) ) )
);
Beim Versuch, „In die Elementanweisung einzufügen“, wird anstelle einzelner Elementanweisungen lediglich eine verschachtelte Elementanweisung hinzugefügt. Und der Graph Builder scheint diese verschachtelten Elementanweisungen einfach zu ignorieren.
Betreff: So fügen Sie mithilfe von JSL dynamisch Elementanweisungen für ein Diagramm hinzu
Mehr anzeigen...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
plotvars = {"NPN1", "NPN2", "NPN3", "NPN4", "PNP1"};
xcol = "wafer";
gb_expr = Expr(Graph Builder(Size(809, 629), Show Control Panel(0)));
var_expr = EvalExpr(Variables(X(Expr(NameExpr(As Column(dt, xcol))))));
For Each({colname, idx}, plotvars,
Insert Into(var_expr, Eval Expr(Y(Expr(NameExpr(As Column(dt, colname))))));
);
Insert Into(gb_expr, Name Expr(var_expr));
For(idx = 1, idx <= N Items(plotvars), idx++,
elem_expr = Substitute(
Expr(Elements(Position(1, _pos_), Line(X, Y, Legend(_lgnd_)))),
Expr(_pos_), idx,
Expr(_lgnd_), idx
);
Insert Into(gb_expr, Name Expr(elem_expr));
);
// Show(gb_expr);
gb = Eval(EvalExpr((Send(dt, Expr(gb_expr)))));
gb_expr = Graph Builder(
Size(809, 629),
Show Control Panel(0),
Variables(X(:wafer), Y(:NPN1), Y(:NPN2), Y(:NPN3), Y(:NPN4), Y(:PNP1)),
Elements(Position(1, 1), Line(X, Y, Legend(1))),
Elements(Position(1, 2), Line(X, Y, Legend(2))),
Elements(Position(1, 3), Line(X, Y, Legend(3))),
Elements(Position(1, 4), Line(X, Y, Legend(4))),
Elements(Position(1, 5), Line(X, Y, Legend(5)))
);
Betreff: So fügen Sie mithilfe von JSL dynamisch Elementanweisungen für ein Diagramm hinzuSuper, diese Idee hat funktioniert. Ich musste nur den Elementbefehl auf der Graph Builder-Ebene einfügen und nicht versuchen, die Elementbefehle selbst in einen Ausdruck zu integrieren.