Verwenden von JSL zum Hinzufügen von Referenzlinien zu Page-By-DiagrammenIch habe ein Skript, in dem ich Page By verwende, um eine Reihe von Diagrammen zu erstellen. Ich möchte jedem Diagramm unterschiedliche Referenzlinien hinzufügen, die aus einer Liste stammen.
Derzeit kann ich nur angeben, zu welchen Diagrammen die Referenzlinien hinzugefügt werden sollen, indem ich mithilfe von ScaleBox auf das Diagramm anhand seines ganzzahligen Index (der bei 2 zu beginnen scheint) verweise. (Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt als die Verwendung des Integer-Index.) Beispiel:
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 Integer-Index richtig für die ScaleBox-Funktion angeben kann. Die Page By-Funktion scheint die Diagramme einzufügen 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.
Aber die Reihenfolge stimmt nicht ganz überein: Wenn die Variablen in der Rolle „Page By“ beispielsweise [A50, B50, B100] sind, werden die Diagramme geordnet [A50, B50, B100 ], aber die mit Sortierliste erstellte Liste wird geordnet [A50, B100 , B50].
Gibt es eine Möglichkeit, das Page By-Diagramm nach Namen statt nach Ganzzahlindex anzugeben? Und wenn nicht, gibt es eine Möglichkeit, meine Liste so zu sortieren, dass die Listenreihenfolge mit der Diagrammreihenfolge übereinstimmt?
Verbraucher- und MarktforschungDatenmischung und -bereinigungBetreff: Verwenden von JSL zum Hinzufügen von Referenzlinien zu Page By-DiagrammenGraph Builder verwendet eine Hybridsortierung.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 versuchen, eine einfachere Methode zum Festlegen Ihrer Referenzlinien zu verwenden.Wenn Sie direkt zu der AxisBox gehen, zu der Sie die Referenzlinie hinzufügen möchten, erfolgt dies mit einfacherem Code.Unten finden Sie ein Beispiel.Außerdem enthält das Scripting-Handbuch einen vollständigen Abschnitt zum Arbeiten mit Anzeigebäumen und der Scripting-Index 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
)
);