JSL erstellt jedes Mal eine Wirbelsäulenlinie für den Gruppenwechsel
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 erstellt X-mal-Y-Diagramme basierend auf einer Liste. Ich versuche jetzt, eine Rückgratlinie hinzuzufügen, habe aber zwei Probleme:
1. Die Wirbelsäulenlinie sollte basierend auf der Spalte „Gruppe“ erstellt werden und kann unterschiedliche Werte haben (z. B. „Wert1“ könnte „Wert4“ sein oder „Wert0“ kann manchmal „Wert34“ sein), also muss ich einen Weg zum Erstellen finden dies wenn möglich mit einer Liste
2. Es entsteht 1 Wirbelsäulenlinie und nicht 4, wie ich möchte
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 „x standardisieren“ und klicke auf „OK“
und als letztes füge ich die Zeilenlegende hinzu

Erweiterte statistische ModellierungDatenmischung und -bereinigungMassenanpassungBetreff: JSL erstellt jedes Mal eine Wirbelsäulenlinie für den GruppenwechselVielen Dank! das funktioniert!
für den Fall, dass jemand andere Farben in der Rückenlinie 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] ))
);Betreff: JSL erstellt jedes Mal eine Wirbelsäulenlinie für den GruppenwechselHallo,
Ich denke, Sie müssen sich dafür mit der Ausdrucksverarbeitung befassen. Sie beginnen mit einem Ausdruck und fügen darin Dinge ein. Insbesondere fügen Sie die Spline-Anpassungsdetails in den y-nach-x-Anpassungsausdruck ein.
Die Handhabung von Ausdrücken erfordert eine steile Lernkurve, ist aber sehr leistungsstark.
Sehen Sie, ob Sie dadurch auf den gewünschten Weg gelangen. Beachten Sie die Kombination von „Insert Into()“ und „Substitute()“, die im ursprünglichen Ausdruck die verschiedenen Gruppenebenen durch _XX_ 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;