enregistrement des graphiques au format PNG ou JPEGSalut,
J'ai créé un script qui permet à l'utilisateur de sélectionner un fichier Excel, de le traiter, d'y ajouter ou de formuler une colonne, d'ouvrir le générateur de graphiques et de le tracer avec un filtre de données local.
Ma question est:
1. Comment puis-je enregistrer des graphiques en choisissant l'option de filtre de données local à l'aide du script ? Par exemple, j'ai 2 filtres de données locaux, disons Trimset(10, 100, 101, 110, 111, 1000, 11111) et formula(yes or no) et j'ai besoin de tracer des graphiques comme (All trimset values with formula NO) et (Chacune des valeurs de trimset avec la formule OUI) .. donc un total de 8 graphiques.
2. Dans mon graphique, je veux que la déclaration sous le graphique "Où est Trimset .... et la formule est NON" soit incluse.
3. Enregistrez les graphiques dans un dossier au format png ou jpeg
4.La table de données JMP et les tables de création de graphiques se terminent sans enregistrer.
5. comment créer une fonction complémentaire pour en faire une opération en un seul clic, car je dois le faire pour 100 fichiers ou plus ?
J'ai lu toutes les discussions mais je n'arrive pas à trouver la bonne réponse. J'apprécie vraiment votre aide.
Merci
Re : enregistrer des graphiques au format PNG ou JPEGOui, une boucle For est disponible.JSL est un langage très complet, avec toutes les fonctionnalités que l'on peut attendre d'un langage informatique.
Je vous suggère de lire les premiers chapitres du Guide de script, afin que vous puissiez vous faire une idée de tous les composants du langage et de la manière de les implémenter.
Si vous pouviez me donner quelques informations sur les langages informatiques avec lesquels vous travaillez, cela m'aiderait à vous fournir des exemples JSL dans des termes que vous connaissez.
Re : enregistrer des graphiques au format PNG ou JPEGMerci txnelson pour la réponse. C'était très utile. Si je voulais faire une boucle for dans un filtre de données, est-il possible de le faire ? Qu'il peut parcourir automatiquement chaque condition et tracer les graphiques. Comme vous l'avez suggéré, je vais examiner la fonctionnalité Addin dans le guide de script.Re : enregistrer des graphiques au format PNG ou JPEGVoici une approche différente, sans utiliser le filtre de données :
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
deletedirectory("$temp/myPics");
createDirectory("$temp/myPics");
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
eval(evalexpr(biv = dt << Bivariate(
Y( :weight ),
X( :height ),
Automatic Recalc( 1 ),
Fit Line( {Line Color( {213, 72, 87} )} ),
where( age == expr(thisAge) & sex == expr(thisSex) )
)));
parentBox = Report( biv ) << parent;
picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
biv<<CLOSEWINDOW></CLOSEWINDOW>
Files In Directory("$temp/myPics") = {"age12sexF.png", "age12sexM.png", "age13sexF.png", "age13sexM.png", "age14sexF.png", "age14sexM.png", "age15sexF.png", "age15sexM.png", "age16sexF.png", "age16sexM.png", "age17sexF.png", "age17sexM.png"};
where clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphwhere clause above graphclause where au-dessus du graphique
Dans ce cas, la clause where est au-dessus de la sortie de la plate-forme, j'ai donc utilisé la méthode <Re : enregistrer des graphiques au format PNG ou JPEG
Mon premier point est que vous ne devriez pas lire les discussions pour apprendre à scripter JMP.Vous devriez lire le Guide de script JSL.
Aide==>Livres==>Guide de script
Ensuite, si vous ne parvenez pas à faire fonctionner les choses, la communauté de discussion est une excellente ressource pour vous aider.
Permettez-moi de répondre aux questions que vous posez.
1. Comment utilisez-vous un filtre de données local, puis enregistrez la sortie.
Vous trouverez ci-dessous un script brut qui vous montrera comment faire cela d'une manière très peu fantaisiste
dt=Open(<PATH to="" your="" data="https://community.jmp.com/" table="">);
gb=Graph Builder(
Size( 527, 453 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 13 ) ), Smoother( X, Y, Legend( 14 ) ) )
);
Thefilter=gb<<LOCAL data="https://community.jmp.com/" filter=""></LOCAL></PATH>
Le code du générateur de graphes et de chacun des filtres locaux est disponible sous les triangles rouges.Si vous les sélectionnez et allez dans "Enregistrer le script", vous obtiendrez le code requis pour les différents cas que vous avez.Démarrez simplement Graph Builder.Enregistrez ensuite le script pour le générateur de graphes.Ouvrez ensuite le filtre local.Définissez-le sur votre premier cas (clauses where), puis enregistrez son script.Ensuite, changez le filtre local au cas suivant et enregistrez son script ... etc.
2. La déclaration sous le graphique est enregistrée au format png
3. Il vous suffit de spécifier dans la fonction Enregistrer l'image le chemin.Cela peut être géré par programme afin qu'il puisse suivre n'importe quelle méthode de dénomination que vous souhaitez utiliser.
4. L'exemple de script montre la méthode pour le faire
5. Il existe une très bonne documentation dans le Guide de script sur la façon de créer un complément.C'est une réponse beaucoup trop longue pour être traitée dans la discussion
Re : enregistrer des graphiques au format PNG ou JPEGCe code ajoute un petit menu à n'importe quel filtre de données - sélectionnez vos colonnes et cliquez sur OK pour parcourir les entrées et enregistrer automatiquement le tracé GraphBuilder.
(les colonnes avec des valeurs continues ne sont pas répertoriées)

Names Default to HERE(1);
if(not(namespaceExists("autoAnimate")),New NameSpace("autoAnimate"));
autoAnimate:update = function({},
Try (autoAnimate:DFTopLB = Current Report()["Local Data Filter", List Box( 1 )], stop());
Try(autoAnimate:myDFTPBs = (Current Report()["Local Data Filter", Lineup Ruler Box( 1 ), List Box( 1 )] << Xpath( "//TabPageBox" )),stop());
// collect Data Fitlers with ListBoxes, remove the continuos ones.
autoAnimate:myDFLBs ={};
For Each ( {TPB,i}, autoAnimate:myDFTPBs, tmp=(TPB << xpath( "//ListBoxBox" ));If(NItems(tmp),Insert Into(autoAnimate:myDFLBs,tmp[1]),Remove from(autoAnimate:myDFTPBs,i) ));
// which columns are used?
autoAnimate:DFCols = Transform Each( {TPB}, autoAnimate:myDFTPBs, Trim( Word( 1, TPB << Get Title, "(" ) ) );
// what are the entries? (for the filename)
autoAnimate:myDFLBItems = autoAnimate:myDFLBs << get items;
// how many entries?
autoAnimate:myDFLBNItems = Transform Each( {items}, autoAnimate:myDFLBItems, N Items( items ) );
// variales for the for loops
chars = {"aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii"};
// append a Display Box:
Try(autoAnimate:animatePane << delete);
autoAnimate:DFTopLB << append( autoAnimate:animatePane = V List Box (Spacer Box( size( 0, 20 ) ),Panel Box( "cycle selected + save", V List Box( colSelection = List Box( autoAnimate:DFCols ), H List Box( Button Box("update",autoAnimate:update()),Spacer Box (size(40,0)),Button Box( "start", autoAnimate:animateNsave() ) )) ) ));
);
autoAnimate:animateNsave = Function( {},
// which DFs are selected?
selectedCols = colselection << Get Selected Indices;
// compose the expression
expression = "";
xx=1;
// for loop for every active DF:
For( i = 1, i <= N Items( autoAnimate:myDFTPBs ), i++,
expression = expression || If( Contains( selectedCols, i ),
"For(" || chars[i] || "=1," || chars[i] || "<=" || Char( autoAnimate:myDFLBNItems[i] ) || "," || chars[i] || "++,__LB" || Char( i ) ||
"__ << clear selection << set selected(" || chars[i] || ");",
"if(1,"
)
);
// save current Graph builder Plot -- how about other reports?
expression = expression || "wait();(current report()<< XPath(\!"//OutlineBox[@helpKey='Graph Builder']\!"))<<SAVE picture=""></SAVE>Re: enregistrement des graphiques au format PNG ou JPEG@hogi , ce script est génial ! Je partage mes résultats d'analyse avec de nombreux utilisateurs non JMP et l'ajout de ce menu à n'importe quel graphique avec un filtre de données local est très utile.
*Il peut être utile pour les débutants de noter que le script de @hogi est autonome et peut être ajouté à une table de données (en utilisant le triangle rouge en haut du panneau de gauche de votre table de données et en sélectionnant « Nouveau script »). Ensuite, lorsque vous exécutez ce script, il ajoutera le petit menu au rapport actif actuel auquel un filtre de données local est déjà appliqué.
Re: enregistrement des graphiques au format PNG ou JPEGC'est devenu plus facile : )
J'ai ajouté la fonctionnalité à la barre d'outils du générateur de graphiques *)
*) maintenant disponible via la place de marché :
https://marketplace.jmp.com/appdetails/Graph%20Builder%20Toolbar

Re: enregistrement des graphiques au format PNG ou JPEG... mais toujours la version avec le même bug.
Si vous souhaitez l'accélérer, veuillez modifier l'argument de wait() de () à ( 0) :
