Dans cette démonstration, nous utiliserons un script pré-écrit pour voir comment créer un rapport personnalisé. Donc, dans le journal du cours, dans la section, il y a un script appelé données NOx pour les données d'oxyde d'azote. Et nous avons six préparations différentes. Et puis nous avons enregistré le log de la concentration de l'oxyde d'azote pour chacun des réplicats des six préparations différentes. Le scénario est donc pré-écrit. Et dans le journal du cours, cela s'appelle Custom NOx Report Script. Et je vais exécuter ce morceau par morceau. Mais je veux en fait exécuter le tout pour que nous puissions voir le résultat final avant de passer en revue et de regarder ce que fait chaque partie du script. Je vais donc tout gérer. Ce script crée un tableau récapitulatif utilisé dans le générateur de graphiques. Nous allons passer par là pour ne pas utiliser uniquement les données brutes. Mais le rapport personnalisé est un rapport à onglets. Sur le premier onglet, appelé %CV, nous avons cette plate-forme Graph Builder en direct. Donc, ce triangle rouge est le menu typique du triangle rouge que je verrais dans le générateur de graphiques. Et puis, nous avons les coefficients de variation calculés ou %CV pour chaque niveau. Et ici, nous avons un menu triangle rouge personnalisé créé par notre script qui me permet de spécifier le nombre de décimales que je veux pour les colonnes de nombres dans mon rapport. Et sur le deuxième onglet, appelé Informations générales, j'ai les données brutes pour chaque niveau, la moyenne et l'écart type qui sont utilisés pour calculer le coefficient de variation, et la valeur calculée. Et si je faisais une sélection dans ce menu en forme de triangle rouge, ce que je ferai en fait. Dans %CV, l'onglet avant, j'irai au triangle rouge et sélectionnerai deux décimales. Le script examine toutes les cases des colonnes de nombres dans ce rapport. Voyons donc comment il a été construit. Ainsi, la première chose que fait le script est d'envoyer le message à sens unique à la table de données d'origine avec le journal de l'oxyde d'azote - le journal de la concentration de l'oxyde d'azote dans le rôle Y et la préparation dans le rôle X. Et ce dont j'ai besoin pour calculer le coefficient de variation, c'est le tableau de rapport des moyennes et des écarts-types. Je demande donc qu'il soit activé. Je mentionnerai qu'il existe de nombreuses façons d'obtenir le coefficient de variation de JMP sans le calculer à la main. Mais nous illustrons, encore une fois, certaines des idées d'obtenir des valeurs sous forme de matrice et d'utiliser ces calculs matriciels. Je vais donc parcourir les lignes Et voici la sortie à sens unique avec la table que j'ai demandée. Maintenant, en ligne, nous voyons cette autre syntaxe pour obtenir la couche de rapport. Et un avantage de l'utilisation de cette syntaxe est que si je n'ai pas besoin de tout ce qui est dans ce rapport, je peux simplement demander, dans ce cas, l'élément de plan pour le tableau que je veux-- les moyens et les écarts-types. Pour que je puisse simplifier un peu mon code lorsque j'accède aux boîtes d'affichage. Et je vais stocker cela dans la variable ob. Ici, notre convention utilise simplement l'abréviation de boîte de contour. Et vous avez vu quand j'ai survolé, il stocke déjà une valeur, car j'ai déjà exécuté tout le script. Mais je vais réaffecter cela. Maintenant, les lignes et récupèrent la colonne des niveaux, puis les colonnes des moyennes et des écarts-types. Pour les niveaux, je n'ai pas du tout besoin de manipuler les valeurs de cette colonne. Je vais simplement vouloir cela dans mon rapport personnalisé pour le tableau des estimations et dans les informations de base - le tableau Tous les résultats. Donc, une chose intéressante que je peux faire avec une boîte d'affichage dont j'ai juste besoin d'une copie est d'envoyer le message "boîte de clonage". Et cela va juste stocker un clone de cette boîte d'affichage dans les niveaux, même après avoir fermé la fenêtre à sens unique. Nous indicons donc la variable ob avec String Col Box Maintenant, ici encore, nous pourrions utiliser les en-têtes de colonne, et cela ne ferait certainement pas de mal de le faire. Mais parce que nous n'avons que cette seule boîte d'affichage stockée dans - ou la référence à celle-ci stockée dans ob, il est assez facile d'utiliser la syntaxe simple avec les valeurs d'index. Je vais donc exécuter la ligne Et donc Levels stocke maintenant une boîte d'affichage, et plus précisément une boîte de colonne de chaîne que vous pouvez voir ici dans le journal. Ligne J'ai besoin d'utiliser les moyennes et les écarts types dans le calcul. Je ne peux donc pas simplement en avoir une copie. J'ai besoin d'obtenir les valeurs sous forme de matrice et de les stocker dans la variable mMeans, ou matrice de moyennes. Et vous pouvez voir dans le journal, ou si vous survolez mMeans, quelles sont ces valeurs. Et la même chose en ligne pour les écarts-types. Donc je lance ça, et encore une fois, vous pouvez-- je vais faire un peu plus petit-- vous pouvez voir dans le journal ces valeurs. Line crée une variable appelée mCVs, et ce n'est encore qu'un calcul pour ce coefficient de variation. C'est une mesure relative de la variabilité où nous divisons les écarts-types par les moyennes, puis multiplions cela par Alors je vais exécuter la ligne Alors maintenant j'ai les coefficients de variation. Et à ce stade, je n'ai besoin de rien d'autre de la plate-forme. Je vais donc envoyer le message à ow - ceci est envoyé à la référence d'objet de la couche d'analyse - pour fermer cette fenêtre. Et je recommande toujours, lorsque votre script peut fermer des fenêtres, qu'il s'agisse d'analyses ou de tableaux de données qui ne sont plus nécessaires, allez-y et faites fermer ces fenêtres par votre script. Parce que si nous n'avons plus besoin qu'ils soient ouverts, nous n'avons pas besoin qu'ils prennent de la mémoire. Maintenant, pour la prochaine étape, je voulais utiliser le générateur de graphiques dans mon rapport personnalisé. Et le générateur de graphes ne calcule pas actuellement le coefficient de variation comme l'une de ses statistiques récapitulatives. La solution de contournement consistait donc à créer ce tableau récapitulatif avec le coefficient de variation, qui est intégré dans la commande Tableaux récapitulatifs, puis à l'utiliser comme base pour le générateur de graphiques. Donc, avant d'obtenir le tableau récapitulatif, je souhaite fermer celui qui s'est affiché lorsque j'ai exécuté l'intégralité du script. Et quand je ferme ça, je reçois l'avertissement qu'il y a une autre fenêtre ouverte, donc je vais dire, allez-y et fermez tout. Et cela a immédiatement supprimé le Graph Builder de mon rapport personnalisé. Donc, à ce stade, il n'y a pas vraiment de raison de garder cet exemple de rapport personnalisé ouvert. Nous allons le recréer au fur et à mesure que nous progressons dans le script. Je vais donc fermer celui-là aussi. Ainsi, la ligne envoie "Résumé" comme message à la table de données d'origine, où nous regroupons par préparation. Et la statistique sera ce coefficient de variation. Je vais donc exécuter la ligne Et maintenant, j'ai tout ce dont j'ai besoin pour construire mon rapport personnalisé. Nous utilisons donc Nouvelle fenêtre. Et je vais stocker la boîte d'affichage créée par ceci dans la variable nw afin que je puisse communiquer avec elle. Je titre ma nouvelle fenêtre Rapport personnalisé, puis je souhaite créer un script pour ces onglets. Nous spécifions donc Tab Box. Et puis le nombre d'onglets est simplement déterminé par le nombre d'arguments de boîte de page d'onglet que vous fournissez à cela. Nous aurons donc dans ce cas. Le premier argument de Tab Page Box est le titre. Et donc le premier s'appelle %CV. Et puis, H List Box me donne une liste horizontale qui contiendra le Graph Builder. Et donc je lance ce live. C'est ainsi que j'obtiens cette plate-forme en direct dans cette fenêtre en faisant en sorte que ce lancement se produise dans la zone d'affichage. C'est la syntaxe que j'aurais pu saisir en créant de manière interactive le générateur de graphiques et en l'envoyant à la table Summarize. Et puis, l'autre chose que j'aligne dans la zone de liste H est la zone de contour, appelée estimations, qui va avoir la zone de table contenant la zone de colonne de chaîne stockée dans les niveaux. Et mon script crée une boîte de colonne numérique avec les valeurs% CV. La deuxième zone de la page à onglet contient les informations d'arrière-plan, en utilisant une zone de contour pour l'étiqueter comme Tous les résultats. Et dans la zone de contour, une zone de tableau aligne horizontalement quatre zones de colonne de nombres. Donc je vais agrandir ça juste pour m'assurer de saisir les lignes que je veux, qui sont à travers Et je vais exécuter cette partie. Ce n'est donc pas complet. C'est le point de départ de mon rapport personnalisé. Et je pense que je peux rendre la fenêtre de script un peu plus étroite maintenant afin que nous puissions voir les deux côte à côte. Donc, Graph Builder n'a pas, par défaut, de ligne à donc c'est l'une des choses que je veux ajouter. Je veux le redimensionner, car je n'ai pas besoin que le graphique soit aussi grand. Et je veux ajouter ce menu en forme de triangle rouge à l'élément de plan du budget des dépenses. Remarquez, dans le script, lorsque j'ai créé la zone de contour des estimations sur le premier onglet du rapport personnalisé, j'ai stocké ce résultat dans ob. Et c'était un nom de variable que j'avais utilisé plus tôt lorsque j'obtenais les moyennes et les écarts-types de la plate-forme à sens unique. Donc là encore, j'ai simplement utilisé l'abréviation et remplacé cette valeur car je n'avais pas besoin de la valeur précédente. Donc, si je fais défiler vers le bas maintenant pour voir le reste du script, j'envoie un message "Set Menu Script" à la zone d'affichage stockée dans ob, qui est cette zone de contour des estimations. Et Set Menu Script prend comme argument une liste d'éléments de menu alternant avec l'expression qui s'exécute lorsque cet élément de menu est sélectionné. Ainsi, l'expression parcourt simplement les cases des colonnes de nombres dans le rapport et définit le format. Nous avons une largeur de champ du nombre maximum de caractères pouvant être affichés, puis le nombre de décimales. Donc, en fonction de l'option de menu du triangle rouge que nous sélectionnons, cela détermine laquelle de ces expressions s'exécutera. Je vais donc parcourir les lignes Et dans le rapport personnalisé, vous voyez maintenant que nous avons le menu du triangle rouge. La ligne va changer la taille de la boîte de cadre du générateur de graphiques. Et c'est quelque chose que, si j'allais à-- je vais faire un clic droit sur le bouton Divulgation, et sous Modifier, sélectionnez Afficher l'arborescence-- je pourrais faire défiler vers le bas. Lorsque vous regardez un rapport entier, il y a beaucoup de constructeurs ici que nous n'utilisons pas lorsque nous écrivons nos propres scripts. Mais je défile vers le bas. OK, il y a PictureBox, faites défiler un peu plus, il y a ce titre, faites défiler encore un peu. Vous pouvez survoler pour voir les cases des axes. Et enfin, je vois le FrameBox, et donc je peux voir que c'est la chose que je veux redimensionner. Au fur et à mesure que vous vous familiarisez avec les plates-formes, vous n'aurez peut-être pas besoin de regarder l'arborescence. Donc, ligne, j'inscris la nouvelle fenêtre avec et envoie le message "Frame Size", qui est en pixels, et je vais continuer et exécuter la ligne Donc, cela a redimensionné cette boîte de cadre de Graph Builder. Là encore, vous pouvez utiliser l'index de script pour voir quels types de messages les différentes boîtes d'affichage peuvent recevoir. Donc, si je vais dans le menu Aide et que je sélectionne Index des scripts, je peux passer de Toutes les catégories à Afficher les boîtes, et faire défiler vers le bas pour trouver FrameBox et voir les messages qui peuvent y être envoyés. Je vais fermer l'index de script. L'autre chose que nous voulions faire est, sur l'AxisBox, nous voulons ajouter une ligne de référence. Et encore une fois, j'utiliserais - si je n'étais pas familier avec le - si je n'étais pas familier avec la structure arborescente d'affichage pour Graph Builder, je regarderais cette fenêtre Structure arborescente. dans certaines plates-formes est l'axe vertical. Dans certaines plates-formes, c'est l'horizontale. Dans ce cas, c'est l'axe horizontal. J'envoie le message pour ajouter la ligne de référence. Et les arguments ici sont à quelle valeur voulez-vous que la ligne de référence soit ? Je le veux chez Quel style de ligne ? Je veux du solide. La couleur? Je vais devenir noir. Le quatrième argument est une étiquette sur l'axe. Et donc en ayant juste une chaîne de caractères vide, nous disons que nous ne voulons pas d'étiquette. En fait, je pourrais supprimer cela tant que j'ai cette virgule pour dire à JMP qu'il s'agit du cinquième argument, et non du quatrième argument. Si je n'avais pas cette virgule, alors JMP étiquetterait l'axe avec un Mais parce que j'y mets la virgule, JMP comprend qu'il s'agit de la largeur de la ligne, pas de l'étiquette. Donc je vais exécuter la ligne Et cela dessine ma ligne de référence. Et puis, la toute dernière partie de ce script consiste à envoyer "Save Journal" à la boîte d'affichage stockée dans nw, et à l'appeler Custom CV Report.jrn. Maintenant, votre script peut se terminer ici en produisant ce rapport avec la fenêtre en direct du générateur de graphiques et le menu du triangle rouge avec lequel l'utilisateur peut interagir. Et en fait, je vais aller de l'avant et sélectionner une décimale cette fois. Dans certains cas, vous pouvez également enregistrer ce rapport en tant que journal. Et vous perdrez ce menu triangle rouge lorsque vous faites cela. Et votre Graph Builder ne sera plus un rapport en direct. Mais la dernière option ici montre comment vous pouvez enregistrer un rapport personnalisé en tant que journal avec le message "Enregistrer le journal". Donc dans ce script, nous avons lancé la couche d'analyse. Nous avons récupéré l'objet de la couche de rapport, puis obtenu les éléments de cette couche de rapport dont nous avions besoin soit comme copies, soit comme matrices pour les manipulations. Nous avons créé une table de données distincte pour la plate-forme que nous voulions utiliser, puis créé le rapport personnalisé à l'aide de Nouvelle fenêtre, Dans ce cas, avec des onglets, des zones de liste horizontales et des zones de contour comme zones d'affichage, en plus de la colonne de chaîne case stockée dans Niveaux et les différentes cases de colonne de nombre. Et puis, nous avons vu comment envoyer des messages aux composants de ce rapport personnalisé.