comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Si j'ai utilisé la fonction « PAGE » dans le générateur de graphiques et que j'ai maintenant plusieurs graphiques sur la même page, comment puis-je obtenir les graphiques du générateur de graphiques un par un dans une boucle pour les enregistrer au format png ?
Ceci est un exemple de code de @Craige
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" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$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(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
Merci.
Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Un fichier pptx n'est qu'un fichier zip déguisé. Si vous modifiez l'extension de .pptx à .zip (vous devrez peut-être modifier les paramètres du dossier dans Windows pour afficher les extensions de fichiers connues). À l’intérieur du fichier zip se trouvera un dossier appelé media qui contient toutes les images.
Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Je l'ai fait fonctionner sur powerpoint avec une boucle. Merci WendyRe : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Merci Mélanie. Je vais essayer ça.Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Powerpoint fonctionne, même si je ne sais pas comment extraire les images de PowerPoint.
J'ai expérimenté et eu de la chance avec l'enregistrement au format HTML. Lorsque vous enregistrez un rapport au format HTML, toutes les images sont enregistrées dans un dossier nommé gfx. Si vous continuez à enregistrer le fichier encore et encore, le dossier gfx n'est pas réécrit comme le fait la page HTML, mais toutes les images sont simplement ajoutées au même dossier.
J'ai eu plusieurs versions de cet exemple de script sur lesquelles nous travaillions dans des messages, et parfois il enregistrait chaque graphique individuellement, et parfois non. Avec l'itération actuelle, cela semble fonctionner. Si ce n'est pas le cas, il y a du code qui effectue l'enregistrement sur PowerPoint et qui est commenté. Voyez si vous pouvez faire en sorte que cela fonctionne avec votre script plus complexe. Notez que la page HTML finale ne contiendra que le tout dernier rapport graphbuilder, pas tous. Dans le dossier gfx, je reçois une image pour chaque graphique et également une image pour chaque zone de légende - vous devrez les éliminer.
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
unique lotid = Associative Array(dt:lot_id);
unique Wafer = Associative Array(dt:wafer);
currentid = unique lotid << First;
currentwafer = unique Wafer << First;
For( iwfr = 1, iwfr <= N Items( unique Wafer ), iwfr++,
nextwafer = unique Wafer << Next( currentwafer );
Eval(
Eval Expr(
gb4 = dt << Graph Builder(
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Page( :SITE ),
Group X( :PNP2 ),
Group Y( :NPN2 ),
Color( :lot_id )
),
Elements( Treemap( X, Y, Legend( 24 ), Summary Statistic( "% of Total" ) ) ),
where( Wafer == Expr( currentwafer ) ),
Display( :SITE, Size( 181, 153 ), List Display ),
)
)
);
// powerpoint save
//If( File Exists("$desktop/wow.pptx"), gb4 << Save Presentation( "$desktop/wow.pptx", "Append", "PNG" ),
// gb4 << Save Presentation( "$desktop/wow.pptx", "PNG" )
//);
// html save
gb4 << Save HTML( "$desktop/wow.html", "PNG" );
gb4 << Close Window;
currentid = unique lotid << First;
);Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Oui, il existe un exemple dans le Scripting Index.
- Cliquez sur le menu Aide et sélectionnez Index des scripts.
- Entrer Enregistrer la présentation dans le champ de recherche.
L'index des scripts fournit la syntaxe, une brève description et un exemple de script pour Enregistrer la présentation . J'ai joint une image de la fenêtre pour votre commodité.
Bonne chance avec votre projet de script !
Wendy
Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Je pense que je peux travailler avec ça,
est-ce juste une ligne de script pour obtenir le powerpoint ?
Merci WendyRe : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Avec Page(), les graphiques complets ne sont pas stockés dans des DisplayBox individuelles qui peuvent être enregistrées dans des fichiers PNG individuels. L'exportation vers un fichier PowerPoint diviserait les pages. Sinon, vous devrez utiliser un filtre de données local, Where() ou By().
Wendy
Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Salut Wendy,
Merci pour l'idée d'utiliser By. La raison pour laquelle je veux la fonction PAGE est qu'elle me donne la possibilité de verrouiller les balances et que je peux tout afficher, pas seulement celle sélectionnée.
Par hasard, existe-t-il un moyen d'accéder à différents graphiques à tracer à l'aide de la fonction PAGE ? Ce serait vraiment utile.
Merci beaucoup.
Re : comment enregistrer des graphiques lors de l'utilisation de PAGE dans le générateur de graphiques JSL ?Bonjour,
Personnellement, j'utiliserais un By() au lieu de Page() dans ce cas car avec un By, une liste d'objets Graph Builder est renvoyée. Je peux ensuite parcourir la liste des objets pour enregistrer chaque fichier PNG. Par exemple,
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
By( :age, :sex )
);
For( i = 1, i <= N Items( gb ), i++,
fName = Report( gb[i] )[Outline Box( 1 )] << Get Title;
Report( gb[i] )[Outline Box( 1 )] << Save Picture( "$TEMP/myPics/" || fName || ".png", "PNG" );
);
J'espère que cela t'aides!
Wendy