Chers tous,
Je cherche un moyen d'améliorer la mise en page de mes graphiques en réorganisant ce que j'ai fait avec le générateur de graphiques. J'ai maintenant 9 petits graphiques les uns sous les autres, en utilisant l'option "Page". Ce que je voudrais, c'est qu'ils soient disposés 3X3 car cela a l'air bien plus joli (une sorte d'affichage en treillis). Je sais que vous pouvez l'obtenir en utilisant le bouton "Wrap", mais dans ce cas, tous les axes sont définis de la même manière, ce qui n'est pas une option puisque la variable de regroupement que j'utilise pour "Page" concerne des paramètres avec des unités très différentes et des ordres très différents d'ampleur…. De la même manière, le "groupe X" ou le "groupe Y" ne fonctionnerait pas non plus. J'ai essayé d'envoyer les graphiques à un journal et de les réorganiser manuellement, mais je n'arrive pas à bien coller les graphiques à côté d'un autre.
Je ne sais pas si j'aurais besoin d'écrire un script pour cela, pour m'assurer que le rapport est structuré à l'aide de "image/displayboxes" ou plus, mais le problème est que, chaque fois que j'enregistre le script pour mon générateur de graphiques, puis le réexécute plus tard, le graphique n'est pas représenté, seuls les axes le sont... Le plus simple (je pense) est donc de créer d'abord le graphique dans le générateur de graphiques, de l'envoyer à un journal, puis de réorganiser le journal. Droite?
Des idées sur la façon de gérer cela?
Merci beaucoup!!
Yanne
Vous pouvez créer des graphiques individuels, puis les assembler dans une fenêtre.Si vous affichez toujours les mêmes 9 graphiques, le script ci-dessous peut être tout ce dont vous avez besoin ; si les niveaux changent, vous pouvez construire la hiérarchie des fenêtres avec une boucle.
Names default to here( 1 );
//Open sample data and create a binning column
dt = Open("$SAMPLE_DATA/Body Fat.jmp");
dt << New Column( "Age (decades)",
Numeric,
Nominal,
Format( "Best", 10 ),
Formula( 10 * Floor( :Name( "Age (years)" ) / 10 ) )
);
//function to build each individual graph with a local data filter
GraphDecade = function({decade},
gb = dt << Graph Builder(
Size( 300, 300 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Name( "Age (years)" ) ) ),
Elements( Histogram( X, Legend( 5 ) ) ),
SendToReport( Dispatch( {},
"Graph Builder",
OutlineBox,
{Set Title( "Decade: " || Char( decade ) )} )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter(
columns( :Name( "Age (decades)" ) ),
Where( :Name( "Age (decades)" ) == decade ),
Display( :Name( "Age (decades)" ), Size( 256, 168 ), List Display )
)
)
)
);
//Window with graphs
win = new window( "Ages by Decade",
V List Box(
Text Box( "Distribution of Ages within Decades", << Set Font Size( 20 ), << Set Width( 600 ) ),
H List Box(
vb1 = V List Box(
GraphDecade(20),
GraphDecade(40)
),
vb2 = V List Box(
GraphDecade(30),
GraphDecade(50)
)
)
)
);
(vb1[1] << Find("Local Data Filter")) << visibility("collapse");
(vb1[2] << Find("Local Data Filter")) << visibility("collapse");
(vb2[1] << Find("Local Data Filter")) << visibility("collapse");
(vb2[2] << Find("Local Data Filter")) << visibility("collapse");
Edité : bug corrigé