Forçage d'une carte complète avec un jeu de données partielSalut,
J'espère que quelqu'un pourra vous aider avec quelques conseils ici. Dans le cadre d'une génération de rapports plus importante, je génère des cartes thermiques de plaquettes avec le script suivant:
Graph1 = dt << Graph Builder (
Taille (300, 300),
Afficher le panneau de configuration (0),
Afficher le pied de page (0),
Y Group Edge ("Gauche"),
Variables (
Groupe X (: Col, Afficher le titre (0)),
Groupe X (: ChipCol, Show Title (0)),
Groupe Y (: Rangée, Afficher le titre (0)),
Groupe Y (: ChipRow, Afficher le titre (0)),
Couleur (: valeur_test)
),
Where ((: ReportLevel == Report_Level &: lot == this_lot &: wafer == this_wafer)),
Par (: VarDescription),
Éléments (Heatmap (légende (13))),
SendToReport (
Dispatch ({}, "titre du graphe", TextEditBox, {Set Text ("")}),
Dispatch ({}, "titre X", TextEditBox, {Set Wrap (2)}),
Dispatch ({}, "Y title", TextEditBox, {Set Wrap (2)})
)
)
J'ai jusqu'à 150 valeurs possibles pour: VarDescription et j'ai constaté qu'exécuter cette opération en boucle pour créer chaque carte, ajouter le journal et fermer la carte était très fastidieux. J'ai constaté que permettre au générateur de graphes de créer toutes les cartes en même temps avec l'instruction By (: VarDescription) était beaucoup plus fluide et que, pour construire mon journal, je pouvais extraire les cartes individuelles des positions de tableau dans l'objet graphique. Ce qui m’a empêché d’obtenir une carte complète, c’est d’avoir des valeurs pour TOUS les sites, sinon j’obtiens des cartes partielles et consolidées. Même si je n'ai testé que quelques sites, je souhaite afficher l'intégralité de la carte pour des considérations spatiales. Dans ma table de données, j'inclus une poignée de lignes de référence (factices) qui représentent des valeurs vides pour tous les emplacements de la première colonne et de la première ligne. Cela forcera effectivement l'affichage de la carte complète dans le générateur de graphique lorsque les lignes "factices" sont incluses. Où je suis bloqué, c'est comment inclure ces lignes de référence pour chaque carte lorsque vous utilisez l'instruction By (: VarDescription) dans le générateur de graphes par rapport à l'utilisation d'une instruction filter (Where). Je ne pense pas qu'il y ait un moyen de le faire lors de la création initiale des cartes. Existe-t-il un moyen d'ajouter des données à un objet graphique après le fait? Ou modifier le filtrage généré? J'ai remarqué que les cartes individuelles du journal se retrouvaient avec des filtres modifiés, générés par l'instruction By (). Comme solution de rechange qui s’intègre dans cette approche, j’ai envisagé de créer des lignes «factices» pour tous: possibilités de VarDescription, mais la table de données deviendrait terriblement volumineuse et encombrée. J'essaie d'éviter ça.
Merci!
Re: Forçage de la carte complète avec jeu de données partielJim - Merci! C'est une excellente approche. J'ai appris le JMP à la volée et je pense que mon inexpérience avec la génération de graphiques et de tableaux invisibles pour la manipulation et leur fermeture en coulisse était une des raisons qui a rendu une approche en boucle de chaque parcelle aussi maladroite. J'aime bien l'idée de créer un modèle de cette manière et de simplement saisir des données partout où elles existent. J'aurai probablement besoin de refondre une bonne partie de mon script car je suis en train de traiter beaucoup de choses, mais ce sera pour le mieux à long terme. Merci encore!
Cory
Re: Forçage de la carte complète avec jeu de données partielVoici un script qui, je crois, vous donnera ce que vous voulez. Il générera tous les wafermaps dans une fenêtre de journal. J'ai omis la clause Where () de votre script Graph Builder, car je n'avais pas les valeurs disponibles, mais vous devriez pouvoir ajouter la ligne sans aucun problème réel.
Names Default To Here( 1 );
dt = Current Data Table();
// Create the empty wafer map data set
dtWaferMap = dt << Summary(
private,
Group( :Col, :ChipCol, :Row, :ChipRow ),
Freq( "None" ),
Weight( "None" )
);
dtWaferMap << delete columns( "N Rows" );
// Get a list of all of the VarDescriptions
Current Data Table( dt );
Summarize( dt, byVarDes = by( :VarDescription ) );
// Create the output journal
NW = New Window( "Heat Maps", <<JOURNAL></JOURNAL>

Re: Forçage de la carte complète avec jeu de données partielEn fait, j'avais commencé avec Page () il y a bien longtemps, mais le problème est que cela ne fonctionne que si toutes les cartes décrivent des sous-ensembles du même paramètre, car il existe une légende / échelle commune. J'ai vraiment besoin que chaque carte soit un paramètre différent, et By () crée en fait des tracés discrets.
Re: Forçage de la carte complète avec jeu de données partielJ'ai créé des exemples de données à l'aide de votre structure de données et créé une réplique de votre carte thermique. J'ai ensuite ajouté un deuxième ensemble de valeurs VarDescription, avec uniquement un sous-ensemble de cellules. Ensuite, plutôt que d’utiliser un "BY", j’ai déposé la VarDescription dans la zone Page et obtenu le résultat suivant

Le problème avec la page, c'est qu'il ne permet que 100 valeurs de page. Cependant, ceci est facilement surmonté en subdivisant vos données dans un échantillon de 100 pages.
Voici le code généré par Graph Builder
Graph Builder(
Size( 418, 646 ),
Show Control Panel( 0 ),
Show Footer( 0 ),
Y Group Edge( "Left" ),
Variables(
Page( :VarDescription ),
Group X( :Col, Show Title( 0 ) ),
Group X( :ChipCol, Show Title( 0 ) ),
Group Y( :Row, Show Title( 0 ) ),
Group Y( :ChipRow, Show Title( 0 ) ),
Color( :test_value )
),
Elements( Heatmap( Legend( 33 ) ) ),
SendToReport( Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ) )
);
Re: Forçage de la carte complète avec jeu de données partielEn guise de suivi, je me suis intéressé un peu plus aux cartes de formes. Il semble que cela puisse fonctionner d'une certaine manière, mais je ne vois pas comment adopter facilement le format row / col, subrow / subcol de mes tracés, qui est important pour notre application. Je suppose que je pourrais forcer brutalement. Les cartes que je génère ne sont pas simplement utilisées comme représentation spatiale finale sur des coordonnées x / y. Ils sont utilisés pour traiter les parties et communiquer rapidement avec d’autres personnes. Traiter en x / y ne ferait qu'ajouter une autre couche de traduction, ce qui est un peu maladroit pour nos besoins.
Re: Forçage de la carte complète avec jeu de données partiel
Row et Col définissent essentiellement la grille de la carte. ChipRow et ChipCol sont essentiellement des sous-lignes et des sous-colonnes.
Voici un exemple de sortie généré pour chaque unique: VarDescription. Voici comment il apparaît lorsqu'il existe des données pour tous les sites.

Ce que j'essaie de faire est de le forcer à paraître complet, même avec des données partielles. Les rangées factices accomplissent ceci et je l’obtiens.

Sans l'avantage des lignes factices, voici à quoi cela pourrait ressembler ...

Je n'ai pas exploré de carte de forme, mais avec un peu de travail en amont, c'est peut-être la meilleure façon de faire. Je peux regarder un peu plus.
Re: Forçage de la carte complète avec jeu de données partielJe tente de reproduire votre problème.
Quelques questions:
Pourriez-vous insérer une capture d'écran de vos résultats?
Quelles sont les définitions de Row et ChipRow et de Col et ChipCol?
Avez-vous exploré en utilisant une carte de forme?