Besoin d'aide avec un script pour diffuser les lignes de l'axe Y sur Graph Builder lors de l'utilisation de la fonction de mise en page « Page » et en gardant l'axe Y indépendantBonjour à tous,
Bien que la nouvelle capacité d'empiler les panneaux dans Graph Builder soit étonnante, la clé de cette étonnante est de garder l'axe Y indépendant les uns des autres. Cependant, lorsque vous avez beaucoup de panneaux (niveaux) et que vous souhaitez ajouter des lignes de grille sur l'axe Y, vous devez les faire un par un, ce qui est horrible. Avez-vous des idées sur un script qui vous permettrait d'indexer chaque panneau et d'ajouter des lignes de grille indépendamment ?
Ici, vous pouvez voir que j'ai utilisé l'ancienne méthode (dans le grand ensemble de données de classe) en copiant les paramètres de l'axe et en diffusant un collage de ceux-ci et bien qu'il ajoute les lignes de la grille, il définit toutes les plages de l'axe Y sur les mêmes que les paramètres du panneau copiés.

Merci pour toutes les idées !
Steve
Automatisation et scriptsExploration et visualisation des donnéesRe: Besoin d'aide avec un script pour diffuser les lignes de l'axe Y sur Graph Builder lors de l'utilisation de la fonction de mise en page « Page » et en gardant l'axe Y indépendantUtilisez XPath pour obtenir une référence aux boîtes d'axes qui vous intéressent (axe X, Y ou les deux), puis faites ce que vous voulez avec cette liste de boîtes d'axes. Cet exemple active la grille principale pour l'axe Y sur toutes les boîtes d'images
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(893, 542),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Page(:age, Levels per Row(3)), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)))
);
abs = Report(gb) << XPath("//AxisBox");
yaxis = abs[2::NItems(abs)::2];
yaxis << Show Major Grid(1);

Re: Besoin d'aide avec un script pour diffuser les lignes de l'axe Y sur Graph Builder lors de l'utilisation de la fonction de mise en page « Page » et en gardant l'axe Y indépendantC'était rapide, Jarmo ! J'aime mieux ta solution, mais voici une autre façon d'utiliser Eval(Parse()).
Names Default To Here( 1 );
//Manually add your reference line to the top left panel of the graph builder.
//Then run this script with the graph builder report in focus.
axisList = Current Report() << XPath( "//AxisBox" );
//Grab axis specifications from vertical axis of first panel
//(vertical axes are even-numbered items; horizontal axes are odd)
axspecList = axisList[2] << Get Script();
//find the Reference Line among the other specifications
For( i = 1, i <= N Items( axspecList ), i++,
If( Left( Char( axspecList[i] ), 12 ) == "Add Ref Line",
rlindex = i;
Break();
)
);
//Reference Line specification as string
rlstr = Char( axspecList[rlindex] );
//Apply Reference Line specification to the remaining panels
For( j = 4, j <= N Items( axisList ), j = j + 2,
estr = "axisList[" || Char( j ) || "] <<" || rlstr;
Eval( Parse( estr ) );
);