This new capability has me breaking out my thesaurus, scrambling for new superlatives.This new capability has me breaking out my thesaurus, scrambling for new superlatives.This new capability has me breaking out my thesaurus, scrambling for new superlatives.This new capability has me breaking out my thesaurus, scrambling for new superlatives.Cette nouvelle capacité m'a fait éclater mon thésaurus, à la recherche de nouveaux superlatifs. Alors oui, tant pour être fait avec la série…
Normalement , quand j'écris une série comme celle-ci, j'écris le tout – du début à la fin – avant de commencer à publier quoi que ce soit. Normalement, Je ne veux pas laisser mes lecteurs en suspens pendant que j'écris la prochaine entrée. Normalement, J'essaie d'éviter le stress d'écrire sous un délai. Hélas, il n'y a rien de normal dans cette entrée. Cette entrée est écrite pendant que les autres entrées sont publiées. Normalement, je n'essaierais pas quelque chose comme ça, mais les informations que je vais partager ici ne sont pas seulement pertinentes pour la discussion, elles changent complètement la façon dont je vais aborder ce sujet à l'avenir. Pour rappel, voici les liens vers les autres entrées :
Et maintenant, tournons presque tout ce que je viens de finir de vous dire au cours des dernières semaines sur son oreille.
Il y a un cycle pour savoir comment JMP libère le travail. Habituellement, l'équipe de gestion des produits ne commence à discuter de la nouvelle version avec le grand public qu'environ deux ou trois mois avant la date de sortie. Vous pouvez donc imaginer mon choc lorsque j'ai reçu le feu vert pour écrire sur cette nouvelle fonctionnalité - six mois avant la sortie prévue de JMP 16.
Alors que j'assistais à une réunion au cours de laquelle les développeurs ont présenté cette nouvelle fonctionnalité au personnel de JMP, j'ai partagé mon enthousiasme pour cette fonctionnalité et mon empressement à la montrer aux clients. Imaginez ma surprise lorsque, plus tard dans la journée, on m'a demandé d'écrire un article à ce sujet. Alors, quelle est cette caractéristique magique qui fait palpiter mon cœur ? Qu'est-ce qui m'a poussé à sortir mon thésaurus, à chercher de nouveaux superlatifs ? Quelle est la nouvelle fonctionnalité qui va complètement modifier la façon dont j'introduis les gens dans le monde des scripts JMP ? Eh bien... et, reste avec moi ici... c'est en fait le journal .
Un aperçu des choses à venir
JMP 16 introduira un nouveau journal, actuellement appelé Journal amélioré . Mais, c'est un peu comme dire qu'un smartphone est une chose pour passer des appels téléphoniques (vous vous souvenez qu'ils font ça, n'est-ce pas ?). Le journal amélioré suit une bonne partie de ce que vous faites lorsque vous interagissez avec JMP et (voici la partie géniale) va générer JSL pour lui avec un clic de souris ! Laissez cela pénétrer une seconde.
Cela va bien au-delà des scripts source et des options d'enregistrement du script du triangle rouge. Ils n'essaient pas de faire bouillir l'océan, donc certaines choses ne seront pas capturées dans la première version; l'importation de données et la manipulation de tables de données sont les principaux objectifs de JMP 16. Mais il couvre beaucoup de terrain dès la sortie de la porte. Laissez-moi vous montrer ce que cette chose est déjà capable de faire (avec six mois de développement à faire).
Activer le journal amélioré
Tout d'abord, activer le journal amélioré est aussi simple que d'accéder aux préférences dans JMP (sous JMP > Préférence pour Mac OS ; Fichier > Préférences pour Windows) et en changeant le menu déroulant Style de journal sur "Amélioré". Cliquez sur D'ACCORD et c'est parti pour les courses ! (notez que la capture d'écran ci-dessous provient d'une version anticipée et que le journal a désormais son propre élément de menu vers le bas de la liste.)
Ouvrez maintenant le journal ( Fenêtre > Journal pour Mac OS ; Affichage > Journal Pour les fenêtres). Vous verrez quelque chose qui semble un peu différent de ce à quoi vous êtes habitué. J'ai effacé le mien dans la capture d'écran, juste pour que vous puissiez voir les différentes régions. La partie supérieure est l'endroit où les actions seront enregistrées, ce que je couvrirai dans un instant. La partie inférieure est l'endroit où le JSL généré par JMP apparaîtra.

Comment cela s'inscrit dans notre histoire
J'ai tout mis dans un projet JMP, juste pour que tout reste organisé. Lorsque le journal amélioré entre dans un projet, il est automatiquement placé en bas et passe dans une configuration côte à côte (journal amélioré à gauche ; la sortie JSL à droite).

Étant donné que ce n'est pas censé être une discussion détaillée de la façon dont j'ai fait les choses, je vais simplement passer par quelques étapes et souligner certaines choses. Mais je vais utiliser le même exemple que nous avons utilisé dans mon troisième message . Si vous avez suivi, jetez un coup d'œil en arrière et comparez à quel point c'est facile maintenant.
Tout d'abord, introduisons des données dans JMP. J'ai ouvert Big Class Families.jmp. La zone du journal amélioré contient une entrée qui indique que l'action était un clic de l'utilisateur (sous Type), ce qu'elle a fait, d'où vient l'action dans JMP (sous Origine) et ce qui s'est passé. Il a également un bon horodatage. Jetez maintenant un œil à la zone JSL. Il y a une commande Open(…) (correctement commentée !) prête à être utilisée ! Aucune plongée dans l'index de script n'est requise !

Continuons notre analyse. J'ai fait une distribution avec les colonnes Taille, Poids, Sexe et Âge. Dans le journal amélioré, il y a maintenant une entrée indiquant qu'une commande utilisateur a commencé avec une table de données et a abouti à une fenêtre de plate-forme de distribution. Dans la zone JSL, j'ai l'entrée correctement formatée (et commentée !!!) pour reproduire la plate-forme de distribution.

Maintenant, faisons un ajustement Y par X du poids par rapport à la taille. La même histoire - il y a une entrée dans les zones Enhanced Log et JSL.

Mais ce n'est généralement pas la raison pour laquelle nous ouvrons Fit Y by X, n'est-ce pas ? Nous voulons faire de l'ajustement de ligne ou des tests d'hypothèses. Si nous faisons cela, il n'y a pas de mise à jour du journal amélioré ni de nouveau code JSL.

Nous semblons avoir atteint un barrage routier. Mais attendez! Nous n'avons pas, n'est-ce pas? Nous n'avons pas suivi la Flux de travail JMP encore! Donc (après le flux de travail) la question est, comment faire pour que le journal amélioré capture les modifications que nous avons apportées à Ajuster Y par X en ajustant une ligne ? Comme toujours, la réponse se trouve en APPUYANT SUR LE BOUTON DE RÉPONSE ! Pour ceux qui ont raté mon première série de blogs , j'appelle le petit triangle rouge le bouton de réponse.) Puisque nous sommes dans un Série de blogs JSL, on va au Enregistrer le script sous… une partie du menu du petit triangle rouge, où l'on retrouve une nouvelle entrée, Se connecter .

Cliquer sur cela place une nouvelle paire d'entrées dans le journal amélioré pour Fit Y by X avec les options de ligne ajustées activées.
Donc. Effrayant. Cool.
Note latérale : avez-vous remarqué qu'il gère également les opérateurs de colle (;) ?

Maintenant, le dernier morceau. Comment extraire ce JSL du journal amélioré ? Eh bien, je viens de poser une question, alors appuyons sur le bouton de réponse pour le journal amélioré. Et là on trouve un Enregistrer le script > Dans la fenêtre de script option.

Et nous avons terminé ! Je pourrais supprimer l'appel bivarié supplémentaire (le premier, sans la ligne) et placer les deux fenêtres de rapport dans une fonction Nouvelle fenêtre(), mais le fait est que j'ai obtenu 80%, peut-être 90% du chemin vers un terminé script sans écrire un mot de code. IL COMMENTE MÊME POUR VOUS !!! (Je suis totalement fou en ce moment… attendez une seconde… j'ai besoin de respirer.)

Voici le code fini, si vous voulez jouer avec (Remarque : j'ai modifié le chemin du fichier pour qu'il fonctionne sur d'autres versions de JMP) :
// Open Data Table: Big Class Families.jmp
Open( "$SAMPLE_DATA/Big Class Families.jmp" );
// Launch platform: Distribution
Distribution(
Continuous Distribution( Column( :height ) ),
Continuous Distribution( Column( :weight ) ),
Nominal Distribution( Column( :sex ) ),
Nominal Distribution( Column( :age ) )
);
// Launch platform: Bivariate
Bivariate( Y( :height ), X( :weight ) );
Bivariate( Y( :height ), X( :weight ), Fit Line( {Line Color( {230, 159, 0} )} ) )
Où aller d'ici… encore
Nous voici à la fin de la série de blogs… encore une fois. Je promets que cette fois est pour de vrai. Alors, quels sont vos devoirs pour cette entrée ? Eh bien, vous pourriez être tenté de vous asseoir sur vos mains et d'attendre l'arrivée du journal amélioré. Je sais que c'est tentant, mais je vous recommande de pratiquer ce que nous avons vu dans les épisodes précédents. C'est quelque chose d'important, et vous devriez utiliser ce que vous avez appris. Bonne chance et bon codage !