Utilisation de JSL pour ajouter des lignes de référence aux graphiques Page parJ'ai un script dans lequel j'utilise Page By pour créer un ensemble de graphiques. Je souhaite ajouter différentes lignes de référence à chaque graphique, extraites d'une liste.
Actuellement, la seule façon dont je sais comment spécifier les graphiques auxquels ajouter les lignes de référence est de faire référence au graphique par son index entier (qui semble commencer à 2) en utilisant ScaleBox. (S'il vous plaît laissez-moi savoir s'il existe une meilleure façon que d'utiliser l'index entier.) Par exemple:
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);Cela fonctionne presque, mais mon problème est que je ne sais pas comment obtenir l'index entier spécifié correctement pour la fonction ScaleBox. La fonction Page By semble mettre les graphiques en une sorte de l'ordre alphabétique, j'ai donc pensé que si j'utilisais la liste de tri (RefLineList), l'ordre de la liste correspondrait à l'ordre des graphiques.
Mais l'ordre ne correspond pas tout à fait: par exemple, si les variables du rôle Page By sont [A50, B50, B100], les graphiques seront ordonnés [A50, B50, B100 ] mais la liste créée à l'aide de la liste de tri sera ordonnée [A50, B100 , B50].
Existe-t-il un moyen de spécifier le graphique Page par nom plutôt que par index entier? Et sinon, y a-t-il un moyen de trier ma liste pour que l'ordre de la liste corresponde à l'ordre du graphique?
ScriptingRe: Utilisation de JSL pour ajouter des lignes de référence aux graphiques Page parGraph Builder utilise un tri hybride.Voici un petit script qui fera cela pour les valeurs de votre liste
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 )
)
);
Je vous suggère également de jeter un oeil à l'utilisation d'une méthode plus simple pour définir vos lignes de référence.Si vous accédez directement à l'AxisBox à laquelle vous souhaitez ajouter la ligne de référence, cela se fait avec un code plus simple.Voici un exemple.En outre, le Guide de script contient une section complète sur l'utilisation des arborescences d'affichage et l'index de script contient des définitions et des exemples pour toutes les fonctions.
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
)
);