Verwenden von JSL zum Hinzufügen von Referenzlinien zu Page By-DiagrammenIch habe ein Skript, in dem ich mit Page By eine Reihe von Diagrammen erstelle. Ich möchte jedem Diagramm verschiedene Referenzlinien hinzufügen, die aus einer Liste gezogen wurden.
Derzeit weiß ich nur, wie ich angeben kann, zu welchen Diagrammen die Referenzlinien hinzugefügt werden sollen, indem ich mit ScaleBox anhand des ganzzahligen Index (der bei 2 zu beginnen scheint) auf das Diagramm verweise. (Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt als den ganzzahligen Index.) ZB:
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);Das funktioniert fast, aber mein Problem ist, dass ich nicht weiß, wie ich den für die ScaleBox-Funktion richtig angegebenen Integer-Index erhalten kann. Die Page By-Funktion scheint die Grafiken in zu setzen eine Art in alphabetischer Reihenfolge, also dachte ich, wenn ich Sort List (RefLineList) verwende, würde die Reihenfolge der Liste mit der Reihenfolge der Diagramme übereinstimmen.
Die Reihenfolge stimmt jedoch nicht ganz überein: Wenn beispielsweise die Variablen in der Rolle "Seite nach" [A50, B50, B100] sind, werden die Diagramme nach [A50, B50, B100 ], aber die mit Sortierliste erstellte Liste wird sortiert [A50, B100 B50].
Gibt es eine Möglichkeit, das Diagramm "Seite nach" nach Namen anstatt nach ganzzahligem Index anzugeben? Und wenn nicht, gibt es eine Möglichkeit, meine Liste so zu sortieren, dass die Listenreihenfolge mit der Diagrammreihenfolge übereinstimmt?
SkriptingBetreff: Verwenden von JSL zum Hinzufügen von Referenzlinien zu Page By-DiagrammenGraph Builder verwendet eine hybride Sortierung.Hier ist ein kleines Skript, das dies für Ihre Listenwerte erledigt
refList = {"B100", "A50", "B50"};
For( i = 1, i <= N Items( refList ), i++,
If( Length( refList[i] ) < 4,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( "00", Length( refList[i] ) - 1 ) ||
Substr( refList[i], 2 )
);
);
refList = Sort List( refList );
For( i = 1, i <= N Items( refList ), i++,
While( Length( Word( 1, refList[i], "0" ) ) == 1,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( refList[i], 3 )
)
);
Ich schlage außerdem vor, dass Sie sich beim Festlegen Ihrer Referenzlinien eine einfachere Methode ansehen.Wenn Sie direkt zu der AxisBox gehen, zu der die Referenzzeile hinzugefügt werden soll, erfolgt dies mit einfacherem Code.Unten ist ein Beispiel.Das Skripthandbuch enthält außerdem einen vollständigen Abschnitt zum Arbeiten mit Anzeigebäumen, und der Skriptindex enthält Definitionen und Beispiele für alle Funktionen.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
refList = {60,65};
gb = dt << Graph Builder(
Size( 528, 956 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :sex ) ),
Elements( Points( X, Y, Legend( 8 ) ), Smoother( X, Y, Legend( 9 ) ) )
);
Summarize( dt, groups = by( :Sex ) );
For( i = 1, i <= N Items( groups ), i++,
Report( gb )[axisbox( i * 2 )] << Add Ref Line(
refList[i],
"Solid",
"Black",
"",
1
)
);