JSL - Générer -xy Plot qui parcourt les colonnes avec différentes variables
Salutations,
Contexte : Je dispose d'un très grand ensemble de données qui résulte de tests RF spécifiques pour les dispositifs à semi-conducteurs. Au cours de ce test RF, diverses conditions différentes sont importantes. J'ai 3 sorties qui sont testées sur 16 canaux différents dans 6 états de test différents, ce qui m'oblige à générer 105 graphiques différents.
exemple : gain par rapport à la fréquence sur le canal 1 à l'état de test 1 ; Gain par rapport à la fréquence sur le canal 2 à l'état de test 1 où j'ai 15 canaux et 6 états de test.
J'ai cherché une solution sur ces forums de discussion et les placards dans lesquels je suis arrivé sont un fil de discussion lancé en 2017 intitulé " Comment exporter un graphique JMP vers PPT par JSL ?"
J'ai essayé d'incorporer le script utilisé dans cette solution pour m'aider et je peux le faire créer le nombre requis d'intrigues, mais je ne parviens pas à filtrer des canaux spécifiques.
Je pense que j'ai du mal à communiquer cela, alors s'il vous plaît, si vous avez besoin de précisions, demandez.
Merci
Summarize( dt, lstChannel = By( :channel ) );
gb = Graph Builder(
invisible,
Size( 1225, 952 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Freq _(GHz)" ) ),
Y( :Gain ),
Group X( :wafer_num ),
Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) )
);
For( i = 1, i <= N Items( GroupBy ), i++,
gb << Local Data Filter(
columns(
:wafer_num,
:channel,
:RowCol),
Where( :channel == LstChannel[i] ) ),
// I would like to loop through the teststates as well
Where( :teststate == 1 ),
Mode( Show( 1 ), Include( 1 ) ) );
If( i == 1,
gb << Save Presentation( "$TEMP/jmp_example2.pptx" ),
gb << Save Presentation( "$TEMP/jmp_example2.pptx", Append )
);
gb << remove data filter;
);
Open( "$TEMP/jmp_example2.pptx" );Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesJe suppose que les deux autres ne se sont pas attachés
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesMerci pour les informations, c'est toujours instructif. Je pense que c'est très fortuit que vous soyez celui qui m'a le plus aidé. Vous voyez, je suis ingénieur industriel dans une fonderie qui propose un mix de produits très élevé et à faible volume et nous effectuons une quantité importante de tests RF. Tout ce que vous avez mentionné :
- il existe une plage connue comme les limites de contrôle ou de spécifications,
- besoin d'évoluer vers quelque chose comme +/- k sigma,
- besoin de contrôler les lignes de quadrillage, par exemple, une ligne de quadrillage à chaque 0,5 sigma,
- les données dont la valeur nominale est grande mais la variation est très faible, par exemple, signifie que la valeur est 1750222 stdev est 0,000023, puis je trace une transformation Y-moyenne et je trouve une bonne échelle et j'utilise l'algorithme, gdinc.jsl
- effectuer une analyse et déterminer si les données sont très asymétriques ou grumeleuses (regroupées).
C'est ce que j'essaie d'accomplir que nous testons et notre client utilise des limites de spécifications générales basées sur aucune donnée. Nous essayons donc de déterminer les limites de spécifications basées sur +/- 3 sigma et +/- 4,5 sigma avec un contrôle supérieur et inférieur associé. limites.Un autre exemple est que lorsque je demandais l'élargissement de l'axe X pour les tracés de distribution, c'était parce que nos limites de spécifications actuelles sont LSL = 20 et USL = 40. C'est pourquoi je suis un fervent défenseur de JMP en raison des outils formidables dont vous disposez dans les utilitaires Qualité et Processus.
Je sais très peu, voire pas du tout, sur le traçage d'analyses de données multivariées, mais je vais le faire tourbillonner.
En fait, cette conversation me fait comprendre pourquoi je suis à nouveau ici. J'aimerais avoir votre avis concernant l'utilisation de la même méthode de traçage que vous m'avez donnée pour le générateur de graphiques et la distribution pour l'analyse Fix Y by X. Je pense que c'est un très bon outil d'analyse car nous pouvons voir la différence (statistiquement) entre les ensembles de données qui dans notre cas est wafer_number. Bien sûr, j'utilise un test T de chaque élève pour comparer les moyennes... J'ai essayé de brancher et de brancher et de jouer et je me suis trompé avec la fonction Dispacth.Vous trouverez ci-joint le tableau de données et une fenêtre Enregistrer dans le script de ce que j'essaie de faire avec une image de la sortie. Encore une fois, toute votre aide est extrêmement utile.
En passant, j'ai demandé à mon manager si je pouvais suivre un cours approfondi d'écriture de scénario et il a dit oui, donc si vous avez des recommandations, n'hésitez pas à me le faire savoir. Je suis dans la région de Balitmore, MD.
yng
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesYng,
Vous n'avez pas précisé ce que vous recherchez. J'utilise généralement la mise à l'échelle par défaut de JMP et j'utilise quelque chose comme ce qui suit si je souhaite la même mise à l'échelle des axes pour tous les sous-groupes. Ce script nomme les variables d'intérêt ylist, mais cela peut être appliqué à n'importe quelle variable numérique continue (colonne), même Datetime.L'astuce consiste à laisser JMP évoluer pour tous, puis à copier le paramètre d'axe dans la colonne du tableau, puis tout graphique utilisant cette colonne déploiera cette échelle.
Names Default to Here(1);
ylist = {"Sepal length", "Sepal width", "Petal length", "Petal width"};
dt = Open("$sample_data/iris.jmp");
//get common axis
for(i=1, i<=nitems(ylist), i++,
ovl = dt << Overlay Plot(Invisible,
Y( Column(dt,ylist[i]) ), //yaxis
Overlay( 0 )
);
report(ovl)[AxisBox(1)] << Save to Column Property;
ovl << close window;
);
//now the same axis will be applied to all sub groups
ovl1 = dt << OverlayPlot( Y( :Petal length ), Overlay(0), By(:Species) );
//all 3 subgroups have the same Y - axis
//ovl = dt << OverlayPlot( Y( eval(ylist) ), Overlay(0), By(:Species) );
Je fais une mise à l'échelle personnalisée pour les axes uniquement si :
- il existe une plage connue comme les limites de contrôle ou de spécifications,
- besoin d'évoluer vers quelque chose comme +/- k sigma,
- besoin de contrôler les lignes de quadrillage, par exemple, une ligne de quadrillage à chaque 0,5 sigma,
- les données dont la valeur nominale est grande mais la variation est très faible, par exemple, signifie que la valeur est 1750222 stdev est 0,000023, puis je trace une transformation Y-moyenne et je trouve une bonne échelle et j'utilise l'algorithme, gdinc.jsl
- effectuer une analyse et déterminer si les données sont très asymétriques ou grumeleuses (regroupées).
Concernant la détection des valeurs aberrantes, je n'ai pas trouvé une méthode qui s'applique à toutes les données. Pour les données univariées avec une forte asymétrie à droite (ex. Poisson gonflé à zéro), j'aime utiliser une méthode Lenth modifiée :
- uscreen = médiane + k * (centile p supérieur -médiane) / Abs (Quantile normal (p))
- lscreen = médiane - k * (médiane - percentile inférieur (p)/ Abs (Quantile normal (p) )
- où p pourrait être 0,1 (pour 10 et 90 percentiles) ou p pourrait être 0,25, alors ce serait un pseudo sigma modifié, et généralement k est dans [4,6] pour les données résumées. Il y a des moments pour les données brutes, j'utilise un k beaucoup plus grand.
- De plus, je filtre généralement toutes les données d'une variable, mais si les groupes sont assez différents, je filtre par groupes s'il y a suffisamment de données pour chaque groupe.
Vous trouverez ci-dessous un exemple de calcul des valeurs de dépistage par groupe. Si vargroup a 10 groupes, uscreen et lscreen sont des vecteurs de taille 10 et vg est une liste de 10 noms de vargroup.
//Find global outliers by vargroup for raw measurement data
//Use an assymetric 6 pseudo-sigma, computed from the 10 & 90th percentiles.
summarize( vg=by(vargroup),
c=count,
q10=quantile(varvalue,.10),
q50=quantile(varvalue,.50),
q90=quantile(varvalue,.90)
);
uscr = q50 + 6*(q90-q50)/Normal quantile(0.9);
lscr = q50 - 6*(q50-q10)/Normal quantile(0.9);Veuillez noter:
- Il n’existe pas une seule méthode correcte et vous devez toujours réviser les méthodes avec ceux qui examinent les données. Et les valeurs aberrantes ne doivent jamais être ignorées, car elles conduisent à des informations potentiellement importantes.
- J'utilise souvent 2 niveaux de dépistage, surtout lorsque j'ai besoin de calculer des limites de contrôle, un dépistage des points tracés et un dépistage des limites... les limites de contrôle ne doivent pas accueillir de données 5 et 6 sigma.
- Si vous créez des analyses hebdomadaires, notez que vous pouvez obtenir des valeurs de filtrage différentes chaque semaine. Vous souhaiterez peut-être faire une méga-analyse une fois et utiliser les mêmes limites chaque semaine.
- Pour les données multivariées, vous devez utiliser un écran multivarié. Voir graphique. Deux valeurs aberrantes évidentes sont contrôlées sur la base de limites univariées. Ainsi, si les données sont fortement corrélées, un écran corrélé doit être utilisé. JMP multivarié a un bel écran multivarié.

Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesBonjour gzmorgan0 ,
Vous avez déjà mentionné "Il existe plusieurs méthodes pour mettre à l'échelle automatiquement et rechercher et éliminer automatiquement les valeurs aberrantes".
Je me demande si cela ne vous dérangerait pas de partager cela avec moi ?J'ai fait beaucoup de codage et je suis assez proche de la fin avec quelques ajustements mineurs.
Yng
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesTout d’abord, je m’appelle David. Ravi de vous rencontrer..
C'est exact, je veux une échelle uniforme et j'ajusterais l'axe -x en fonction du pire des cas.J'aimerais entendre votre recommandation pour supprimer les valeurs aberrantes. Ceux-ci tuent mon ensemble de données. Les pièces que nous testons électriquement sont RÉUSSITES, BARELY PASS ou échouent de manière catastrophique. Ces pièces en panne catastrophique doivent être retirées.
Je vais brancher votre script révisé dans mon script principal pour tester. Encore une fois, je suis très reconnaissant. Je tiens également à vous remercier pour le Include().. J'avais une grande partie de mon script qui n'était rien d'autre que des chaînes d'extraction de données SQL. Notre base de données contient 8 tables différentes dont je dois extraire des données en fonction du type de test.
Merci encore...
Voici un exemple pour information : j'en ai 9 qui occupaient une tonne de lignes de code qui ont été résolues par un seul Include().
testdata_HAY_DC_QQ_Data = Expr(
"
SELECT
t1.testdate,
t1.wafer_id,
t1.wafer_number,
t1.lot_number,
t2.rownum,
t2.colnum,
t2.die_id,
t2.part_name,
t2.testname,
t2.channel,
t7.header_id,
t7.idx,
t7.run_id,
t7.set_id,
t7.Supply_Name,
t7.Voltage,
t7.Current
FROM tst_master t1
LEFT OUTER JOIN tst_dataset_header t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN tst_dc_data t7
ON ( t7.header_id = t2.header_id )
WHERE (t1.wafer_number LIKE '"||SelectedLot||"')
AND (t2.testname LIKE '"||SelectedTest||"')
"
);
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variables
Yngeinstn,
J'avais l'impression que vous vouliez la même échelle pour toutes les distributions.JMP Distribution fait généralement un excellent travail pour adapter les histogrammes aux données disponibles. Cependant, lorsque vous tracez des sous-ensembles de données, l'échelle des histogrammes individuels sera différente. Si vous connaissez la plage des données, attribuez les valeurs pour Lo, Hi et inc. Si vous souhaitez que le script gère des données dont la plage pourrait changer avec un changement de processus ou ?? alors le calcul de Lo, Hi et inc devrait être une tâche du script.
Pour le script précédent, j'ai juste utilisé le min et le max du non exclu données.
Lo = Étage( Col Minimum ( :test_2 * If( Exclus(), Vide(), 1 ) ) );
Salut = Plafond( Col Maximum( :test_2 * If( Exclus(), Vide(), 1 ) ) );
Ci-dessous, j'ai fait une autre modification pour donner un peu d'espace aux extrémités : calculer l'écart type des données non exclues et ajouter un demi-écart type.L'une des raisons pour lesquelles j'ai proposé des graphiques alternatifs qui comparent les distributions est que JMP s'adaptera à toutes les données incluses et que vous pourrez voir les effets du canal et de l'état du test.
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Il existe plusieurs méthodes pour mettre à l'échelle automatiquement et rechercher et éliminer automatiquement les valeurs aberrantes. Je suis réticent à recommander fortement car les méthodes acceptées par une industrie pourraient ne pas être acceptables par une autre ; et les méthodes de données normales ne s'appliquent généralement pas aux données grumeleuses (données groupées ou données spatiales) ou aux données de défaut gonflées ou aux données de fiabilité.Mon intention est de vous signaler des alternatives qui pourraient ou non fonctionner pour vous.
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variables
Oui, eh bien, vos compétences sont excellentes et je suivrais un cours JSL avec vous n'importe quel jour.
Petite question cependant.. Je l'ai exécuté avec gd_inc.jsl et voici ce que j'obtiens. Je peux voir que l'échelle est presque parfaite mais mes 15 ensembles de données présentent ces 2 différences. Cela ne veut pas dire que cela n’arrivera pas à l’avenir. Quand vous dites modifier votre script avec le deuxième que vous avez cité, je suis confus. J'essaie de vénérer et de comprendre d'où proviennent les 10.5 et 42.0 et je pense que cela a quelque chose à voir avec la fonction log() mais je ne suis pas sûr.

Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesgd_inc() est une fonction utilisateur qui a été envoyée précédemment sur ce chemin de blog.Je l'ai de nouveau attaché.Soit ajoutez le code à votre script avant de l'utiliser, soit enregistrez le script (j'appelle le mien gd_inc.jsl) dans un répertoire commun de fonctions utiles, votre propre bibliothèque personnelle et pour tout script lorsque vous souhaitez calculer de bons incréments d'axe, ajoutez la déclaration.
Include( "mydirectory/gd_inc.jsl" );
Pour les personnes qui prennent en charge les rapports pour leur entreprise, elles créent souvent un seul gros script, nommé quelque chose comme usr_functions.jsl.Ensuite, au lieu de nombreuses instructions Include(), ils utilisent une seule Include("mydirectory/usr_functions.jsl")
Voici à nouveau la fonction. Regardez le message précédent, il existe des exemples d'utilisation de cette fonction.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/À propos, j'utilise et enseigne JMP et JSL depuis de nombreuses années. Donc mes connaissances ne sont pas si étonnantes, j'essaie juste de les partager.
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesVous êtes incroyable avec ces trucs JSL. Je ne sais même pas si je pourrais trouver tout ça. Je teste celle de la distribution en ce moment. Je ne peux pas non plus vous remercier assez pour les autres graphiques. Je suis sûr qu'on va me demander comment procéder également. Pour information, j'utilise JMP 12.1.0, mais notre société passe à JMP 14, ce que j'ai hâte en raison du complément Semiconductor Toolkit que j'ai trouvé sur ce site.
Je reçois une erreur concernant l'instruction gd_inc.
Nom non résolu : gd_inc dans l'accès ou l'évaluation de 'gd_inc' , gd_inc( Lo, Hi, 10 ) /*###*/
Dans le script suivant, erreur marquée par /*###*/
dt = Current Data Table();
jjrn3 = New Window( "Distribution [test_2]", <<JOURNAL></JOURNAL>
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesYngeinstn,
J'ai joint 2 scripts :
- ModifiedDistribution[test_2].jsl, et
- AutresDistributionPlots.jsl
Ce qu'il faut retenir, c'est que tous les rapports de plateforme n'ont pas la même structure ou les mêmes messages, et ce qui est disponible dépend de votre version de JMP.Afficher la structure arborescente et Obtenir XML sont des messages qui peuvent vous aider à découvrir la structure du rapport et l'index de script répertorie les messages pour les zones d'affichage.J'aime utiliser XPath() pour obtenir une "poignée" sur des objets difficiles à trouver ou sur plusieurs segments, comme BoxPlotSeg et HistSeg.Cependant, il existe d'autres méthodes pour référencer un objet. Pour obtenir un handle sur la scalebox de la variable Y pour un histogramme, utilisez
_xx = gb<< Xpath("//ScaleBox[@charID='1']");
_xx <
ou
Rapport( go )(ScaleBox(1)] << message;
L'autre script montre des tracés alternatifs utiles pour comparer les distributions.
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesMerci pour le scénario... J'ai une question sur la première que vous avez posée. Mettez-vous simplement cela dans le script principal ou dans un nouveau script séparé ?
J'ai adoré le graphique que vous avez tracé et proposé à mon patron, j'attends donc de ses nouvelles sur sa mise en œuvre dans les nombreux rapports qu'il demande.
J'ai également pris le script que vous m'avez donné expliquant comment tracer le -x par -y et j'ai remplacé Graph Builder par Distribution et cela a fonctionné presque parfaitement. J'ai une question sur la structure arborescente. J'ai pu inverser cette ligne et localiser la zone de texte (1), mais avec la modification de la distribution, j'obtiens une erreur lors de l'exécution de ce script. Je n'arrive pas à localiser les pièces à retirer. Je joins la table de données et le script modifié qui inclut la fonction de distribution.
( go << haut de la page Rapport )[ Zone de texte ( 1 )] << supprimer ; //supprime l'instruction Where
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesMerci pour le conseil/code.. Je vais essayer cette semaine.. J'ai un délai raisonnable pour démontrer l'extraction des données, le format du tableau et la sortie du graphique. Votre aide a considérablement augmenté mes chances de réussite
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesComme je l'ai mentionné dans ma réponse précédente, " Vous pouvez créer une échelle fixe ou utiliser un algorithme préféré pour trouver la meilleure échelle pour les données disponibles. " Vous trouverez ci-dessous la fonction gd_inc() créée pour le script 7_InteractiveDisplays_Alternates.jsl (pour le livre JSL Companion, 2e éd.).
Il s'agit d'une simplification des fonctions que j'utilise lors du codage d'une application dont la plage de valeurs est inconnue.Ce script suppose que le format décimal fixe fonctionnera. Un script plus général déterminerait s'il y a trop de décimales, puis passerait à la notation scientifique ou passerait à une échelle logarithmique, etc. Avant de l'utiliser, vous devriez l'essayer.
Les arguments sont Faible, Élevé et Nombre d'incréments. Il renvoie un vecteur de valeur inc, un nombre de décimales pour le format et la longueur maximale ; dans le script complet, il est utilisé pour un axe x et l'orientation est modifiée en fonction de sa longueur. Ou la longueur peut être utilisée pour déclencher si autre chose que le format décimal fixe doit être utilisé.
gd_inc = Function({xlo, xhi, ntic}, {sp,tt, yrnd, ginc, ndec,lc, ll},
sp = (xhi - xlo)/ntic;
tt = log10(sp);
yrnd = If(
tt > 0, 1 - Floor( tt ),
Abs( Floor( tt ) - 1 )
);
ginc =round(sp,yrnd);
ndec = length(word(2,char(ginc),"."));
lc = length(word(1,char(xhi),"."));
if(ndec>0, lc=lc+ndec+1);
if(xlo <0, lc++); //add 1 character for the negative sign
ll=[1,1,1];
ll[1] = ginc; //increment
ll[2] = ndec; //# decimals
ll[3] = lc; //character length
ll
); // end gd_inc
/* test cases
show(gd_inc(1,11,10), gd_inc(.001, .005, 10), gd_inc(10000,20200, 10) )
*/Une fois que vous avez les résultats, modifiez votre script
_yscl = gd_inc(Lo,Hi, 10);
_xx[1] << Axis Setings( {Min( Lo ), Max( Hi ), Inc( _yscl[1] ),
Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} ),
Format("Fixed Dec",12,_yscl[2])
});
JMP fait du bon travail de mise à l'échelle automatique, la raison pour laquelle la mise à l'échelle est trop large pour votre générateur de graphiques est qu'elle est mise à l'échelle pour pouvoir afficher les points et pas seulement les courbes lissées. Une option consiste à obtenir les valeurs de la courbe spline et à les tracer simplement.
Si vous choisissez de pas Pour ce faire, vous devrez trouver le maximum et le minimum des courbes et vous devrez décider si vous voulez que tous les graphiques pour Y_i aient la même échelle, ou si chaque Y_i et Test doivent avoir la même échelle ou chaque graphique sa propre échelle.La fonction JMP Spline Smooth() renvoie les valeurs de spline, et vous pouvez trouver le maximum et le minimum pour chaque courbe possible, puis obtenir le maximum et le minimum dans l'ensemble. Cela fournira le Lo et le Hi et j'utilise généralement 10 pour le nombre d'incréments.
Utilisez ensuite la fonction gd_inc() et modifiez.Si vous connaissez les valeurs basses et hautes, créez un tableau ou des constats pour chaque Y.
La mise à l'échelle personnalisée peut devenir compliquée avec plusieurs courbes et des courbes personnalisées telles que les splines.Si j'ai le temps, je joindrai un script mis à jour pour vos données factices.
BTW, je ne suis pas sûr du réalisme de vos données factices. Comparer plusieurs graphiques dans PowerPoint peut prêter à confusion.GraphBuilder est idéal pour comparer des graphiques. Au lieu de nombreux graphiques, une comparaison (pas nécessairement celle ci-dessous) pourrait être utile. Vous trouverez ci-dessous Y_3 par rapport aux canaux, pour le test et différentes valeurs de X.

Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesje n'ai pas chargé la table..
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesJe viens d'essayer votre solution. Je fais habituellement l'enregistrement du script dans la fenêtre pour pouvoir voir à quoi le graphique est censé ressembler.
J'ai joint des données factices modifiées pour vous donner une idée de ce que j'essaie exactement d'accomplir.
Avec les 15 canaux et dans ce cas 2 états de test qui ont des sorties différentes, je ne vois pas de solution unique.
Faites-moi savoir ce que vous en pensez s'il vous plaît.
Ce test particulier a 3 sorties. que je dois évaluer séparément.
David
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesTrès apprécié.. Je vais l'essayer ce soir..
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesVous pouvez créer une échelle fixe ou utiliser un algorithme préféré pour trouver la meilleure échelle pour les données disponibles.
Une version modifiée du script fourni précédemment est jointe ci-dessous. Le nouveau code est répertorié ci-dessous.Notez que pour les données factices, la meilleure mise à l'échelle est probablement de -8 à 8, cependant, j'ai choisi -7 pour démontrer que plusieurs graphiques peuvent être tronqués.
_xx = gb<< Xpath("//ScaleBox[@charID='Y']");
_xx[1] << Axis Setings({Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )});Il existe plusieurs méthodes pour comprendre comment scripter une modification. Le plus simple est de créer un script sur un graphique, puis d'utiliser l'interface graphique pour
changer les axes ou les titres ou les légendes. Ensuite, dans le triangle inversé rouge (sur le contour du générateur de graphique), sélectionnez Enregistrer le script > Vers la fenêtre de script . En utilisant cette méthode, il affichera un argument Dispatch.Voir ci-dessous.
Graph Builder(
Size( 1242, 709 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ), Group X( :Wafer ID ), Overlay( :RowCol ) ),
Elements( Smoother( X, Y, Legend( 19 ) ) ),
Where( dt:Channel == chnl & dt:Test State == tst ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Results for Channel=1 and Test State=1" )}
),
Dispatch(
{},
"Y",
ScaleBox,
{Min( -7 ), Max( 8 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
)
)
);Puisque votre titre est personnalisé, supprimez le Dispatch dans OutlineBox, puis utilisez ce code dans votre boucle for et chaque graphique aura la même mise à l'échelle spécifiée dans votre script.
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesPuis-je vous poser une autre question concernant la boucle For() avec les graphiques ?
Existe-t-il un moyen de mettre à l'échelle automatiquement le meilleur ajustement ?
Si je peux obtenir l'échelle dans l'exemple de Min = 5 et Max = 30, nous pouvons avoir une meilleure idée de la façon exacte dont les pièces fonctionnent à travers les fréquences...
Bien sûr, je vais devoir supprimer les valeurs aberrantes au préalable.
Merci
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesJe ne peux pas vous remercier assez pour votre aide à ce sujet. Personne ici au travail ne pourrait me dire, même à distance, comment faire ce que vous avez fait.
Grâce à cela, vous avez réduit le temps qu'il me faut pour faire cela d'au moins 80 %.
Votre solution et les scripts SQL que j'écris pour accéder à nos fichiers de base de données nous placeront dans une position fantastique auprès de notre client.
Merci encore..
D
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesMerci pour votre réponse. Je vais utiliser vos exemples pour voir si je peux le comprendre.
J'ai essayé d'utiliser l'instruction "selectwhere" et cela a plutôt bien fonctionné.J'essayais juste de réduire la quantité de code que j'allais devoir écrire. J'ai 5 tests différents avec tous les paramètres listés ci-dessus.
Je ferai un rapport lorsque j'essaierai.
Merci encore..
Re: JSL - Générer un tracé -xy qui parcourt des colonnes avec différentes variablesSalut,
Je recommanderais de modifier votre approche pour générer les graphiques afin d'utiliser les instructions Where au lieu du filtre de données.Le filtre de données est idéal pour l'analyse visuelle interactive. Toutefois, puisque votre vue est invisible, je vous suggère d'utiliser une instruction Where.Lorsqu'une instruction Where est utilisée, une zone de texte Where est visible ; il peut être supprimé. Vous pouvez également utiliser un argument By, By(:Channel, :Test State). Ensuite, le script doit accéder à chaque Go et enregistrer la présentation.
Je ne suis pas fan de Save Présentation, j'aime utiliser P3ICLI, un programme de ligne de commande externe gratuit pour créer des diapositives PPTX à partir de ma sortie JMP. Voir Exemple JSL pour créer PPTX à l'aide de P3ICLI . Comme tout code, il semble compliqué, mais il peut créer des éléments très personnalisés et contrôler le dimensionnement du graphique et du titre.
Cependant, pour les sauvegardes de plusieurs tracés à l'aide de Enregistrer la présentation, nous avons rédigé quelques astuces pour journaliser plusieurs affichages de mise en page sous forme d'images, en utilisant la présentation de sauvegarde, mais vous devez jouer avec le dimensionnement.
Quoi qu'il en soit, vous trouverez ci-joint un tableau de données factice pour émuler votre scénario et deux scripts, chacun enregistrant une image par page.
J'espère que cela t'aides.