Utilisation de JSL pour ajouter des lignes de référence aux graphiques Page ByJ'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 que je connaisse pour spécifier les graphiques auxquels ajouter les lignes de référence est de se référer au graphique par son index entier (qui semble commencer à 2) en utilisant ScaleBox. (Veuillez me faire savoir s'il existe un meilleur moyen 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 correctement l'index entier spécifié pour la fonction ScaleBox. La fonction Page By semble mettre les graphiques en une sorte par ordre alphabétique, j'ai donc pensé que si j'utilisais Sort List( 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], alors les graphiques seront ordonnés [A50, B50, B100 ] mais la liste créée à l'aide de Trier la liste sera ordonnée [A50, B100 , B50].
Existe-t-il un moyen de spécifier le graphique Page By par nom plutôt que par index entier? Et sinon, existe-t-il un moyen de trier ma liste afin que l'ordre de la liste corresponde à l'ordre du graphique ?
Études de consommation et de marchéFusion et nettoyage des donnéesRe : Utiliser JSL pour ajouter des lignes de référence aux graphiques Page ByGraph Builder utilise un tri hybride.Voici un petit script qui fera cela pour vos valeurs de 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 œil à l'aide d'une méthode plus simple pour définir vos lignes de référence.Si vous accédez directement à l'AxisBox auquel vous souhaitez ajouter la ligne de référence, cela se fait avec un code plus simple.Ci-dessous 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
)
);