Les colonnes tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Le script ci-dessous trace quelques colonnes (plusieurs paramètres sur l'axe Y) avec des noms de colonnes commençant par P dans Graph Builder. Je souhaite tracer simultanément quelques autres colonnes dont les noms de colonnes commencent par N dans la PAGE suivante (commande commentée dans mon script ci-dessous).
Dans la PAGE suivante, j'aimerais tracer quelques autres colonnes avec des noms de colonnes commençant par, disons, V et ainsi de suite.
Les informations sur la catégorie de colonne peuvent être prédéfinies soit dans un tableau de données séparé, soit sous toute autre forme, peut-être une liste (je suis flexible à ce sujet). La question est de savoir si cela est faisable via JSL et si oui, comment ?
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
Automatisation et scriptsles fenêtresRe : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?La page est utilisée pour le regroupement par lignes, elle ne peut donc pas être utilisée pour ce que vous souhaitez faire. Vous pouvez avoir une liste de colonnes pour chaque groupe, puis parcourir cette liste tout en ajoutant des générateurs de graphiques distincts à une nouvelle fenêtre avec la zone de liste V par exemple.
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Même le reformatage du tableau de données n'aide pas : les groupes Y individuels affichent tous les éléments :

S'il s'agit simplement de diviser les sous-groupes de colonnes, vous pouvez utiliser un Filtre de données au lieu de Page :

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@hogi @jthi D'ACCORD. Merci. Une autre idée serait de placer/envoyer la première fenêtre du générateur de graphiques avec un ensemble de colonnes tracées dans une fenêtre de journal, l'ensemble suivant de nouvelles colonnes tracées sous la première et ainsi de suite, puis de fermer les fenêtres graphiques ouvertes et les tableaux de données associés. Comment faire cela via JSL ?
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Créez une liste de listes contenant les colonnes qui vous intéressent et parcourez-les tout en créant des générateurs de graphiques et en les ajoutant à la zone de liste journal / v. Toutes vos colonnes sont-elles de même taille ou la quantité de l'axe Y change-t-elle ?
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Voici une option, mais ce n'est pas la seule que vous pouvez utiliser
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Si vous avez des colonnes différentes pour chaque cas/groupe, vous devrez ajouter le JSL pour modifier la valeur de « mon_groupe » à chaque modification.
Vous pouvez probablement le faire en ajoutant un For Each() supplémentaire en dehors du For Each({my_group) actuel, où vous modifiez la valeur de my_group avant de revenir dans le For Each() actuel.
Je vous suggère d'essayer cela, et si vous rencontrez d'autres problèmes, de revenir à la Communauté avec plus de questions.
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@jthi Le nombre de colonnes tracées sur l'axe des y sera différent pour chaque cas/groupe.
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@jthi @txnelson Merci.
Mes paramètres à tracer sont regroupés comme dans le tableau suivant. Le but est de placer chaque groupe en dessous des autres dans le journal. De plus, j'aimerais que l'entrée du groupe soit le titre du graphique pour chacun.Comment modifier le JSL ci-dessus dans ce cas ?

Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Dans votre cas, j'utiliserais alors un tableau associatif dans lequel la clé serait le nom du groupe et les valeurs seraient une liste de paramètres (colonnes). Ensuite, parcourez ce tableau associatif en utilisant For Each lors de la création de votre journal.
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@txnelson @hogi . Merci pour vos suggestions. Je reviens sur ce sujet après une petite pause.
@jthi Exécuter cette partie de votre script dans mon JMP 16.2
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);donne

c'est à dire
{"PNP1", "PNP2", "PNP3"} et
{"NPN3", "NPN2", "NPN1", "NPN4"}ne sont pas tracés sur l'axe y comme mentionné dans mon premier message (c'est-à-dire l'un au-dessus de l'autre avec des lignes de référence de limite de spécification visibles) et sur deux graphiques distincts.
Comme mentionné ci-dessus, mes paramètres à tracer sont regroupés comme dans le tableau séparé suivant
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);Je souhaite que les paramètres de chaque graphique soient regroupés par l'entrée dans la colonne Groupe du tableau ci-dessus.
par exemple, le tracé supérieur a une tuile de CC avec "PNP1", "PNP2", "PNP3" et "PNP6" tracé sur l'axe des y et en dessous le graphique suivant avec le titre CA avec "NPN2", "NPN3", "NPN1" et "NPN4" tracé et enfin le troisième graphique en bas avec le titre "RF" avec "INV2" et "INV4 " tracé sur l'axe des y.
Puis-je s'il vous plaît obtenir de l'aide sur l'approche du tableau associatif pour continuer ? De cette façon, je peux obtenir l'unique Groupes , mais comment obtenir l'associé Paramètres (utilisez Get Rows Where ()) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi , je préfère votre option fenêtre "collector" en plus du journal car elle nous donne plus de flexibilité en fonction de ce que je souhaite regarder)
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?À l'aide de JMP 16, j'ai pu recréer le problème que vous rencontrez.J'ai échoué à utiliser l'option Ajouter des variables, etc. pour obtenir les résultats souhaités.Cependant, en utilisant une technique où le Graph Builder JSL est créé dans une variable de chaîne puis exécuté, j'ai pu obtenir les boîtes à moustaches.

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@txnelson Cela fonctionne dans la version 16.2 (JMP se plaint d'erreurs de syntaxe mais trace toujours le graphique).
Si j'ai une autre liste
paraGroupList = {"DC", "AC"};Comment attribuer CC comme titre du graphique (actuellement PNP1 et 2 de plus par rapport à lot_id ) lors du traçage (graphique du haut)
{"PNP1", "PNP2", "PNP3"}et CA comme titre du graphique (actuellement NPN3 et 3 autres contre lot_id ) pour le traçage (graphique du bas) ?
{"NPN3", "NPN2", "NPN1", "NPN4"}Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Exécutez le graphique.
Cliquez sur le titre et modifiez-le.
Allez ensuite dans le triangle rouge et sélectionnez pour enregistrer le script.
Regardez dans le script et vous verrez le JSL et comment il a modifié le titre.
Adoptez-le dans votre script.
Je vous suggère fortement de prendre le temps de lire le Guide de script.Cela accélérera votre apprentissage de JSL
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@txnelson Merci, j'ai compris comment faire le titre du graphique.
Comment sortir du créer_graphe fonctionner si ycollist est vide?
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?utilisez la fonction Longueur() pour vérifier si la liste contient des entrées, puis contournez le code ;
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@txnelson Merci.Il semble que je ne puisse pas utiliser casser () dans ma fonction de traçage si elle est utilisée dans une boucle for. Je vais voir quelles options j'ai.
Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Faites simplement l’évaluation nécessaire, et si elle n’est pas satisfaite, contournez le code.Voir ci-dessous:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?@txnelson Merci. L'exécution du script me donne des erreurs (sur JMP 16.2) dont je n'arrive pas à me débarrasser.

Re : Les colonnes pouvant être tracées dans le générateur de graphiques peuvent-elles être séparées par PAGE à l'aide de catégories de nom de colonne ?Désolé, je me suis précipité vers ma réponse précédente.Le JSL ci-dessous contournera la création du graphique si le my_group est vide
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);