Cet article de blog détaille la méthode de création de figures dans JMP, utilisables dans PowerPoint. Ainsi, à chaque ouverture du fichier PowerPoint, la figure créée par JMP s'affiche automatiquement dans la diapositive active. Si cette fonctionnalité peut paraître récente, l'insertion et la liaison d'images existent depuis 1990, date de la sortie de la technologie OLE (Object Linking and Embedding) dans les applications Windows. Alors, pour ceux qui découvrent cette technologie plus tard, voyons comment utiliser JMP pour exploiter OLE.
L'idée générale est assez simple (et automatisable). La première étape consiste à créer une figure dans JMP et à l'enregistrer sous un nom de fichier original, par exemple « Figure1.png ». L'étape suivante se déroule dans PowerPoint, où l'on utilise l'onglet Insertion pour insérer une image à partir d'un fichier. En bas de la boîte de dialogue de sélection de fichier qui s'ouvre dans PowerPoint, un bouton permet d'afficher les options. Cochez les deux options pour insérer et lier l'image, puis enregistrez le fichier avec le document.
Pour tester le concept, modifiez la couleur de certaines lignes, puis enregistrez la figure JMP sous le même nom de fichier et ouvrez à nouveau le fichier PowerPoint. Vous constaterez alors que le fichier inséré a également été modifié.
Voici une astuce pour simplifier la suite : créez un nouveau dossier. Enregistrez-y votre script de création de figures, ainsi que le fichier PowerPoint. De cette façon, vous n'aurez plus à vous soucier des chemins d'accès : tout considérera que les fichiers sont stockés localement.
PowerPoint permet d'insérer et de lier plusieurs fichiers en une seule opération. Le premier fichier s'insère correctement, mais les suivants sont redimensionnés de manière inattendue et peu pratique. Il s'agit d'un problème Microsoft, et non d'un problème JMP.
Si vous insérez plusieurs images sur la même diapositive et que vous les redimensionnez ou les mettez en forme, cette mise en forme est conservée dans PowerPoint. Il suffit donc de les mettre en forme une seule fois.
Le script de base pour réaliser cette opération repose sur les fonctions « get picture » et « save picture ». Consultez l'index des scripts pour plus de détails sur leur fonctionnement au-delà de cette application simple. Un rapport JMP contient des figures et des tableaux. La difficulté réside dans le fait de savoir comment cibler une partie spécifique du rapport. Chaque rapport comporte de petits triangles gris permettant d'afficher ou de masquer des éléments. Un clic droit sur un triangle gris ouvre un menu contextuel incluant l'option « Afficher les propriétés ». En cliquant sur cette option, un panneau s'ouvre sur la droite. En haut de ce panneau latéral se trouve une barre de contour fermée appelée « Box Path ». Ouvrez-la, puis cliquez sur l'icône de double page pour copier le chemin dans le presse-papiers. Ce chemin fait référence à l'élément sélectionné dans le rapport et correspond à l'objet du rapport à partir duquel vous devez extraire l'image. Le script suivant illustre comment implémenter cette fonctionnalité.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Design Experiment/Reactor 20 Custom.jmp" );
//dt=Open( "$SAMPLE_DATA/Design Experiment/Reactor 32 Runs.jmp" )
obj = dt << Fit Model(
Y( :Percent Reacted ),
Effects(
:Feed Rate, :Catalyst, :Stir Rate, :Temperature, :Concentration, :Feed Rate * :Catalyst, :Feed Rate * :Stir Rate,
:Feed Rate * :Temperature, :Feed Rate * :Concentration, :Catalyst * :Stir Rate, :Catalyst * :Temperature,
:Catalyst * :Concentration, :Stir Rate * :Temperature, :Stir Rate * :Concentration, :Temperature * :Concentration
),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Screening" ),
Run(
:Percent Reacted << {Summary of Fit( 1 ), Analysis of Variance( 1 ), Parameter Estimates( 1 ), Effect Details( 0 ),
Lack of Fit( 0 ), Sorted Estimates( 0 ), Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 0 ), Box Cox Y Transformation( 0 ), Profiler(
1,
Confidence Intervals( 1 ),
Desirability Functions( 1 ),
Term Value(
:Feed Rate( 12.5, Lock( 0 ), Show( 1 ) ), :Catalyst( 1.5, Lock( 0 ), Show( 1 ) ),
:Stir Rate( 110, Lock( 0 ), Show( 1 ) ), :Temperature( 160, Lock( 0 ), Show( 1 ) ),
:Concentration( 4.5, Lock( 0 ), Show( 1 ) )
)
)}
)
);
objr = obj << report;
fig 1 = Report( obj )["Response Percent Reacted", "Actual by Predicted Plot", List Box( 1 )] << get picture;
fig 2 = Report( obj )["Response Percent Reacted", "Studentized Residuals", List Box( 1 )] << get picture;
fig 3 = Report( obj )["Response Percent Reacted", "Summary of Fit"] << get picture;
fig 4 = Report( obj )["Response Percent Reacted", "Analysis of Variance"] << get picture;
fig 5 = Report( obj )["Response Percent Reacted", "Prediction Profiler"] << get picture;
win = New Window( "report figures", H List Box( fig1, V List Box( fig3, fig4 ) ), fig2, fig5 );
fig 1 << Save Picture( "fig1.png", "png" );
fig 2 << Save Picture( "fig2.png", "png" );
fig 3 << Save Picture( "fig3.png", "png" );
fig 4 << Save Picture( "fig4.png", "png" );
fig 5 << Save Picture( "fig5.png", "png" );
Ce script utilise des données provenant de l'exemple de données pour plus de simplicité.
Mise à l'épreuve du concept :
Je ne plaisantais pas quand je disais de mettre tous les fichiers dans un seul dossier. Créez un nouveau dossier et placez-y le script et le fichier pptx joints au blog.
Exécutez le script ; une fenêtre affichant les figures s'ouvrira et cinq fichiers PNG seront enregistrés dans le dossier contenant le script. (Si vous n'avez pas enregistré le script dans ce dossier, les fichiers risquent d'être enregistrés n'importe où, voire pas du tout, ou une erreur peut se produire.)
Ouvrez la diapositive PowerPoint ; vous devriez voir des figures. Fermez le fichier pptx sans l'enregistrer.
Ouvrez maintenant le rapport et coloriez certaines lignes avec votre couleur préférée. Ensuite, exécutez cette partie du script.
fig 1 = Report( obj )["Response Percent Reacted", "Actual by Predicted Plot", List Box( 1 )] << get picture;
fig 2 = Report( obj )["Response Percent Reacted", "Studentized Residuals", List Box( 1 )] << get picture;
fig 3 = Report( obj )["Response Percent Reacted", "Summary of Fit"] << get picture;
fig 4 = Report( obj )["Response Percent Reacted", "Analysis of Variance"] << get picture;
fig 5 = Report( obj )["Response Percent Reacted", "Prediction Profiler"] << get picture;
win = New Window( "report figures", H List Box( fig1, V List Box( fig3, fig4 ) ), fig2, fig5 );
fig 1 << Save Picture( "fig1.png", "png" );
fig 2 << Save Picture( "fig2.png", "png" );
fig 3 << Save Picture( "fig3.png", "png" );
fig 4 << Save Picture( "fig4.png", "png" );
fig 5 << Save Picture( "fig5.png", "png" );
Ouvrez ensuite à nouveau le fichier PPTX. Il devrait s'être mis à jour. Si ce n'est pas le cas (car je ne peux pas le tester sur votre ordinateur), vous devrez peut-être insérer et lier votre copie locale du fichier PPTX.
Certes, la configuration initiale est un peu fastidieuse, mais une fois en place, cela m'a littéralement fait gagner un temps précieux lors de la republication de présentations mises à jour. J'espère que vous le trouverez utile vous aussi.