JSL erstellt jedes Mal eine Rückenlinie zum Wechseln der Gruppe
Hallo,
Ich habe dieses Skript:
dt = Current Data Table();
listX = {"1","2"};
listY = {"test1", "test2", "test3"};
fybx = dt << FitYByX(
Y( Eval( listY ) ),
X( Eval( listX ) ),
Fit Where( :Group == "BL", Fit Spline( 0.1, Standardized, {Line Color( {213, 72, 87} )} ) ),
try(Fit Where( :Group == "Value0", Fit Spline( 0.1, Standardized, {Line Color( {57, 177, 67} )} ) )),
try(Fit Where( :Group == "Value1", Fit Spline( 0.1, Standardized, {Line Color( {64, 111, 223} )} ) )),
try(Fit Where( :Group == "Value2", Fit Spline( 0.1, Standardized, {Line Color( {207, 121, 38} )} ) )),);Es werden x x y-Diagramme basierend auf einer Liste erstellt. Ich versuche jetzt, eine Rückenlinie hinzuzufügen, habe aber zwei Probleme:
1. Die Rückenlinie sollte basierend auf der Spalte "Gruppe" erstellt werden und unterschiedliche Werte haben (z. B. "Wert1" kann "Wert4" sein oder "Wert0" kann manchmal "Wert34" sein), daher muss ich einen Weg zum Erstellen finden dies mit einer Liste, wenn möglich
2. Es erzeugt 1 Rückenlinie und nicht 4 wie ich will
mein Tisch
| Gruppe | test1 | test2 | test3 | 1 | 1 |
| BL | 1 | 1 | 1 | 1 | 1 |
| BL | 2 | 2 | 2 | 2 | 65 |
| BL | 23 | 3 | 6 | 1 | 1 |
| POR | 2 | 2 | 2 | 2 | 2 |
| Wert1 | 1 | 1 | 1 | 3 | 4 |
| POR | 5 | 7 | 2 | 2 | 2 |
| Wert1 | 7 | 5 | 1 | 7 | 3 |
| Wert2 | 2 | 2 | 2 | 2 | 2 |
| Wert0 | 8 | 1 | 1 | 1 | 6 |
Wenn ich es von Hand mache, ist es so:

und dann wähle ich nach "Gruppe" (ich glaube, ich muss das irgendwie zum Skript hinzufügen)
dann klicke ich auf "flexibel" -> "Spline anpassen" -> markiere das "x standardisieren" und klicke auf "ok"
und das letzte, was ich hinzufüge, ist die Zeilenlegende

SkriptingBetreff: JSL erstellt jedes Mal eine Rückenlinie zum Wechseln der GruppeHallo,
Ich denke, Sie müssen sich dafür die Ausdrucksbehandlung ansehen. Sie beginnen mit einem Ausdruck und fügen Dinge darin ein. Insbesondere fügen Sie die Details des Anpassungs-Splines in den Ausdruck "y x x" ein.
Die Ausdrucksbehandlung hat eine steile Lernkurve, ist aber sehr leistungsfähig.
Sehen Sie, ob dies Sie auf den gewünschten Weg bringt. Beachten Sie die Kombination von Insert Into () zusammen mit einem Substitute (), das _XX_ im ursprünglichen Ausdruck durch die verschiedenen Gruppenebenen ersetzt.
Prost,
Brady
names default to here(1);
dt = current data table();
listX = {"1","2"};
listY = {"test1", "test2", "test3"};
bivExpr = expr(
Bivariate(
Y( evallist(listY) ),
X( evallist(listx) ),
)
);
groupList = (associative array(dt:group << get values)) << get keys;
for (i = 1, i<=nitems(groupList), i++,
insertinto(bivExpr, substitute(expr(Fit Where( :Group == _XX_, Fit Spline( 0.1, {Line Color( {212, 73, 88} )} ))), expr(_XX_), groupList[i] ))
);
show(nameexpr(bivExpr));
bivExpr;Betreff: JSL erstellt eine Wirbelsäulenlinie für jedes Mal, um die Gruppe zu wechselnVielen Dank! das funktioniert!
falls jemand andere Farben in der Rückenlinie haben möchte
ColorList = {};
AList = {207, 121, 38};
BList = {64, 111, 223};
CList = {57, 177, 67};
DList = {213, 72, 87};
InsertInto(ColorList, EvalList(List(AList)));
InsertInto(ColorList, EvalList(List(BList)));
InsertInto(ColorList, EvalList(List(CList)));
InsertInto(ColorList, EvalList(List(DList)));
for (i = 1, i<=nitems(groupList), i++,
insertinto(bivExpr, substitute(expr(Fit Where( :Group == _XX_, Fit Spline( 0.1, {Line Color( _YY_ )} ))), expr(_XX_), groupList[i],expr(_YY_), ColorList[i] ))
);