Bonjour, j'ai créé un générateur de graphiques avec un script généré comme suit :
Graph Builder(
Transform Column( "Unit Number", Nominal, Formula( Char( :"Unit S/N"n ) ) ),
Size( 570, 817 ),
Show Legend( 0 ),
Variables( X( :Unit Number ), Y( :Bounding_Circle_Diameter um ) ),
Elements( Box Plot( X, Y, Legend( 6 ) ) ),
Local Data Filter(
Add Filter(
columns( :Aperture Name ),
Where( :Aperture Name == "F_4.8" ),
Display( :Aperture Name, N Items( 3 ), "List Display" )
)
),
SendToReport(
Dispatch(
{},
"Bounding_Circle_Diameter um",
ScaleBox,
{Min( 1500 ), Max( 5000 ), Inc( 500 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "Bounding_Circle_Diameter um (F/4.8)" ), Set Font Size( 20 )}
),
Dispatch( {}, "X title", TextEditBox, {Set Font Size( 18 )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Font Size( 18 )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Reference Line Order( 6 ),
Add Graphics Script(
2,
Description( "" ),
Text( Center Justified, {0, 2150}, "Range: 44.4638" );
Text( Center Justified, {0, 2050}, "Mean: 2288.48" );
Text( Center Justified, {1, 2500}, "Range: 136.315" );
Text( Center Justified, {1, 2400}, "Mean: 2681.81" );
Text( Center Justified, {2, 2100}, "Range: 97.6151" );
Text( Center Justified, {2, 2000}, "Mean: 2278.41" );
)}
)
)
);Mais le texte et les positions ont été créés manuellement avec des valeurs codées en dur. Comme on peut le voir, les données sont filtrées avec certaines valeurs de colonne. Existe-t-il un moyen de remplacer ces valeurs codées en dur par les statistiques des données, respectivement ?
Position Y du texte -> à partir des valeurs Min du sous-ensemble de données
Moyenne -> valeur moyenne du sous-ensemble de données
plage -> Max - Min du sous-ensemble de données
Merci
L'élément Caption peut automatiquement mettre à jour les statistiques lorsque le filtre est appliqué, et il a quelques options pour savoir où placer les statistiques.Si vous utilisez JMP 17, l'une des options consiste à placer les statistiques dans un tableau sous l'axe.La conservation du placement personnalisé nécessiterait probablement que vous implémentiez un gestionnaire d'état de ligne JSL pour calculer et remplacer les statistiques via un script.

dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Graph Builder(
Size( 528, 464 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Box Plot( X, Y, Legend( 6 ) ),
Caption Box(
X,
Y,
Legend( 7 ),
Summary Statistic( "Mean" ),
Summary Statistic 2( "Range" ),
Location( "Axis Table" )
)
),
Local Data Filter( Add Filter( columns( :sex ), Where( :sex == "M" ) ) )
);
Il existe une meilleure méthodologie à utiliser pour ajouter une sortie graphique à un graphique.Jetez un œil à l'exemple de script ci-dessous pour voir comment déterminer dynamiquement où et quoi afficher sur un graphique.

Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
// Create the graph
gb = Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Access the report output
rgb = gb << report;
// Add a graphics script to the report output
rgb[framebox( 1 )] << add graphics script(
// Find the parametrics of the displayed graph
xMaxAxis = rgb[AxisBox( 1 )] << get max;
xMinAxis = rgb[AxisBox( 1 )] << get min;
yMaxAxis = rgb[AxisBox( 2 )] << get max;
yMinAxis = rgb[AxisBox( 2 )] << get min;
// Calculate the desired column stats
heightMean = Col Mean( :height );
heightRange = Col Max( :height ) - Col Min( :height );
// Calculate the xy position on the graph to display the text
pos = As List(
Matrix( (xMinAxis + .1 * (xMaxAxis - xMinAxis)) |/ (yMaxAxis - .1 * (yMaxAxis - yMinaxis)) )
);
// Write out the text
Text( Center Justified, pos, "Mean: " || Format( heightMean, "fixed dec", 7, , 2 ) );
// Change the display position for the next line to be displayed
pos[2] = pos[2] - .05 * (yMaxAxis - yMinaxis);
// Write out the new line
Text( Center Justified, pos, "Range: " || Format( heightMean, "fixed dec", 7, , 2 ) );
);
Quelques points sur l'utilisation d'un script graphique :
- Le calcul du script graphique se produira à chaque rafraîchissement de l'écran
- Le calcul n'utilise pas les états de ligne, il aura donc toujours des problèmes avec les filtres
- Si vous enregistrez le script à partir de la plate-forme et que vous le réexécutez ultérieurement, il ne fonctionnera pas car il n'est pas autonome.Cela affecte également l'enregistrement dans un flux de travail, un projet, un tableau de bord ou dans un fichier JRP.