filtre de données pour la boucleSalut,
Je suis assez nouveau dans les scripts. Je comprends la boucle for mais j'ai besoin d'un peu d'aide ici.
Je ne parviens pas à trouver l'exemple de boucle for pour un filtre de données dans le guide de script. Si quelqu'un pouvait m'aider avec la syntaxe, ce serait génial.
Ce que j'essaie de faire, c'est que j'ai un treemap et que je dois construire une boucle « for » avec la table de filtre de données pour que les sorties graphiques soient automatiquement enregistrées sous forme de fichier .png.
J'ai joint un chiffre. Par exemple, condition 1 : plaquette 11, en choisissant tous les trimsets Vpp pour 25C et Formule NO (1 graphique)
condition 2 : plaquette 12, choix de tous les trimsets Vpp pour 85C (0,11111) et et Formule NO (1 graphique)
condition 3 : tracer chaque valeur de trimset pour tous pour la tranche 11 (9 graphiques) et la tranche 12 avec OUI (2 graphiques)
Je suis capable de le faire si je le fais un par un dans un code, mais pas ensemble.
Merci
Re : filtre de données pour boucleMerci @David_Burnham , @Craige_Hales Craige et @txnelson
Vous êtes top les gars!
Re : filtre de données pour boucleBon!Re : filtre de données pour boucleL'exemple que je donne ci-dessous contient du code qui ignorera les combinaisons pour lesquelles il n'y a pas de lignes
http://www.pega-analytics.co.uk/blog/scripting-data-filters/
Re : filtre de données pour boucleJe comprends ce qui se passe. Merci pour la très bonne explication Craige.
Je pense que si la condition ne trouve aucune ligne associée à la condition, elle s'interrompt et s'arrête.
"Cette clause Where pour la table de données 'Table finale' n'a généré aucune ligne : Wafer == "12" & Formula == Empty()"
Au lieu de cela, peut-il continuer de manière à pouvoir continuer à tracer avec la boucle ?
Re : filtre de données pour boucleet dans l'exemple de code, gb est un plate-forme objet. le rapport () demande à l'objet plateforme le DisplayBox qui contient le rapport visible de la plateforme. La plate-forme ignore qu’il existe d’autres DisplayBox autour d’elle. Vous devez utiliser la méthode <Re : filtre de données pour boucle
droite. ou gb n'a jamais été défini, ou gb est déjà fermé.
Vous pouvez utiliser
show(type(gb));
showproperties(gb);
dans votre script pour obtenir des informations sur l'objet. Vous devriez voir quelque chose comme ceci dans le journal :
Type(gb) = "Scriptable";
Show Control Panel [Boolean] [Default On] (Displays or hides the control panel.)
Show Legend [Boolean] [Default On] (Displays or hides the legend to the right of the graph.)
Legend Position [Enum] {Right, Bottom, Inside Left, Inside Right}
Legend Settings [Action](Opens a dialog to modify the properties of the legend.)
Continuous Color Theme [Action](Se .... < a lot more follows>
Dans JMP, un objet "scriptable" est un objet comme un Boîte d'affichage ou un plate-forme (ou beaucoup d'autres possibilités) qui a des méthodes. Une DisplayBox a une méthode nommée parent qui est utilisé avec l'opérateur << pour obtenir la boîte parent de DisplayBox. La fonction ShowProperties répertorie toutes les méthodes connues par DisplayBox. Vous pouvez les voir dans l'index des scripts (sous le menu d'aide) sous une forme plus facile à lire.
Lorsque votre script dit "en attente d'un scriptable...", cela signifie que la variable gb ne contient pas d'objet scriptable.
Re : filtre de données pour boucleD'après votre commentaire, je pense que vous avez une mauvaise compréhension du script de Craig qu'il a publié.Dans son code, il n'y a jamais plus d'une instance du générateur de graphiques ouverte à la fois.Le pointeur vers le générateur de graphiques, "gb", pointe vers l'exécution actuelle du générateur de graphiques.Il crée un objet image de la sortie de Graph Builder et l'enregistre dans un fichier.Ensuite, il FERME l'objet générateur de graphique (gb<
Si votre code génère plusieurs générateurs de graphiques et que chacun utilise "gb" comme handle pointant vers l'instance du générateur de graphiques, "gb" pointe uniquement vers la dernière instance du générateur de graphiques.
Re : filtre de données pour boucleSalut Craige,
J'ai implémenté et j'ai commencé à développer les boucles for.
J'ai eu cette erreur, Send Expects Scriptable Object{630} lors de l'accès ou de l'évaluation de 'Send' , Report( gb ) << /*###*/parent/*###*/... Est-ce parce qu'il y a trop de fenêtres ouvertes et que JSL ne réalise pas à quel Go je fais référence ?Re : filtre de données pour boucleMerci CraigeRe : filtre de données pour boucledt = 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" ) );
Il semble que vous deviez peut-être récupérer la boîte d'affichage « grand-parent » pour le générateur de graphiques ; le parent)<
screen capture of large icons of graphs saved by scriptscreen capture of large icons of graphs saved by scriptcapture d'écran de grandes icônes de graphiques enregistrées par script
Re : filtre de données pour boucleC'est vrai, mais le générateur de graphiques accepte également les clauses Where.
Meilleur,
M
Re : filtre de données pour boucleJe crois que cet exemple concernait une distribution y par x ajustée. J'essaie de le faire pour un treemap dans le générateur de graphiques. Je vais vous donner un coup de feu. Merci M_Anderson
Re : filtre de données pour boucleTu pourrais essayer @Craige_Hales réponse à cette question- lien . Plutôt que d'essayer de travailler avec le filtre de données local, l'ajout d'une clause Where dans votre appel de plateforme est probablement une manière plus élégante de faire ce que vous recherchez.