Script de plusieurs colonnes regroupées dans un diagramme de distributionJ'essaie de créer un script pour tracer plusieurs colonnes de paramètres regroupées dans une distribution (comme indiqué sur la figure). Mon problème est que le code a besoin d'une ligne "Distribution continue" distincte pour chaque colonne de paramètre. Mes extractions de données ont des noms de colonne et un nombre de colonnes différents à tracer en fonction de ce que je fais. Je n'arrive pas à comprendre comment prendre cette liste de noms de colonne et la faire tracer dans un groupe comme indiqué ci-dessous, plutôt que de parcourir et de créer des tracés individuels pour chaque paramètre.
Distribution(
Continuous Distribution( Column( :Parameter1 ) ),
Continuous Distribution( Column( :Parameter2 ) ),
Continuous Distribution( Column( :Parameter3 ) )
);

Re : Script de plusieurs colonnes regroupées dans un diagramme de distributionVoici comment je traiterais le problème
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
colList = dt << get column names(continuous,string);
// For this illustration I want to use just the NPNn columns
for(i=nitems(colList), i>=1,i--,
If(substr(colList[i],1,3)!="NPN", remove from(colList,i,1))
);
// build the JSL string
theExpr =
"Dis = Distribution(
Continuous Distribution( Column( :" || colList[1] || " ),
Process Capability( Use Column Property Specs ) )";
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || "," || "Continuous Distribution( Column( :" || colList[i] ||
" ), Process Capability( Use Column Property Specs ) )"
);
theExpr=theExpr||");";
// run the built JSL string
eval(parse(theexpr));
// Standardize the settings
disr = Dis << report;
disr[colList[1]]["Quantiles"]<<CLOSE all="" like="" this=""></CLOSE>Re : Script de plusieurs colonnes regroupées dans un diagramme de distributionNoté, je pense que mon hypothèse que tout commence par une application m'a causé beaucoup de peine.
Une autre question, j'espère, si je veux définir les propriétés de tous les distributions dans un rapport, comme je l'ai fait avec cette seule variable ici, "T05066DD ET_DELTA Ratio" existe-t-il une commande simple pour le faire, ou dois-je créer une boucle for et exécuter le "sendtoreport" pour chaque variable de ma liste ?
ET_DELTA_List = {};<BR />dist = dt << Distribution(Columns(evalList(ET_DELTA_List)));
dist << arrange in rows(5);
dist << Quantiles(0);
dist << Summary Statistics(0);
report(dist)[OutlineBox(2)] << Open all like this(1);
//show properties(dist)
dist << SendToReport(
Dispatch(
{"T05066DD ET_DELTA Ratio"},//this is one of many distributions. i would like to set the following properties to all the distributions in the report
"1",
ScaleBox,
{Min( -5 ), Max( 5 ), Inc( 5000 ), Minor Ticks( 1 ),
Add Ref Line( 2, "Solid", "Black", "", 1 ),
Add Ref Line( -2, "Solid", "Black", "", 1 )}
)
)</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-277293" slang="en-US" mode="NONE">Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution</LINGO-SUB><LINGO-BODY id="lingo-body-277293" slang="en-US" mode="NONE"><P>J'éviterais simplement la surcharge de le placer dans une application.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277279" slang="en-US" mode="NONE">Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution</LINGO-SUB><LINGO-BODY id="lingo-body-277279" slang="en-US" mode="NONE"><P>D'accord merci.</P><P>quelle serait votre stratégie pour y parvenir ? Éviteriez-vous d'utiliser le générateur d'applications avec allocation, etc., et utiliseriez-vous simplement un script pour tout positionner ?</P><P>Merci encore</P><P>Wayne.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277090" slang="en-US" mode="NONE">Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution</LINGO-SUB><LINGO-BODY id="lingo-body-277090" slang="en-US" mode="NONE"><P>La réponse courte est non.Au minimum, vous devez créer une chaîne de caractères qui inclut tout le code de l'application JMP.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-277077" slang="en-US" mode="NONE">Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution</LINGO-SUB><LINGO-BODY id="lingo-body-277077" slang="en-US" mode="NONE"><P>Si je voulais mettre cela dans une application, avec un filtre de données local, pourrais-je mettre l'instruction Allocate dans Eval(Parse) ?</P><P>Donc..</P><PRE><CODE class=" language-jsl">theExpr = "dis = Allocate(
Border1 = Border Box();
DataFilterContext1 = Data Filter Context Box();
List1 = H List Box();
DataFilter1 = Dt << Data Filter( Local );
Report1 = Platform(
Dt,
Distribution(
Continuous Distribution( column( column(Dt, colNames[1])))";
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(Dt, colNames[" || Char( i ) || "])))"
);
theExpr = theExpr || " )
);
)";
show(theexpr);
Eval( Parse( theExpr ) );
Re : Script de plusieurs colonnes regroupées dans un diagramme de distributionIl vous suffit de modifier la liste des noms de colonnes pour répondre aux exigences.Il y a plusieurs façons de le faire, ci-dessous est un exemple
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Work backwards through the list of columns eliminating those that
// do not meet the pattern one is interested in
For( i = N Items( colNames ), i >= 1, i--,
If( left( colNames[i], 3 ) != "NPN" , colNames = remove( colNames, i, 1 ) );
);
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );
Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution@txnelson J'ai utilisé ce script et cela a fonctionné. Ce que j'essaie de faire, c'est d'automatiser mon rapport mais ma table de données est composée de plus de 300 colonnes, le nombre de colonnes varie par semaine. J'ai des noms de colonnes qui commencent par ex. "Échec1", "Échec2",,, "Total1","Total2",,, "Rendement1", "Rendement2",,, "Perte1", "Perte2",,.Comment filtrer pour afficher des distributions continues, par exemple "Perte1", "Perte2", uniquement ?
Re : Script de plusieurs colonnes regroupées dans un diagramme de distribution@RonSwanson ,
Jim @txnelson Le script de vous offre beaucoup plus de contrôle et une solution. C'est une option alternative, car on m'a souvent demandé comment scripter facilement un nombre inconnu de distributions.Ce script comprend également des commandes pour "encapsuler" les distributions et comment envoyer des messages à toutes les distributions en envoyant un message à l'objet (message d'analyse de capacité) et en envoyant un message à l'icône de révélation.
Names default to Here(1);
dt = Open("$Sample_Data/Semiconductor Capability.jmp");
cnames = dt << get column names("Continuous", "string");
//Here I will just use 10
cnames = cnames[1::10];
dist = dt << Distribution(Columns(evalList(cnames)));
//if you want to limit the number per row
dist << arrange in rows(3); //change 3 to 5 or whatever you want
dist << Capability Analysis(0); //turn off the distribution
report(dist)[OutlineBox(2)] << Open all like this(1); //reveal all distributions
report(dist)[OutlineBox(2)] << Close all like this(1); //do not reveal

Re : Script de plusieurs colonnes regroupées dans un diagramme de distributionexactement ce dont j'avais besoin... merci tx !!Re : Script de plusieurs colonnes regroupées dans un diagramme de distributionVoici une façon de générer le code nécessaire pour produire ce que vous voulez
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Get the all of the numeric, continuous column names
colNames = dt << get column names( string, continuous );
// Build a character string that represents the commands that need to be run
theExpr = "dis = dt << Distribution(
Continuous Distribution( column( column(dt, colNames[1])))";
// Loop across the remaining columns in the colNames list and generate the continuous distribution
// commands
For( i = 2, i <= N Items( colNames ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colNames[" || Char( i ) || "])))"
);
// place the closing ")" to complete the command string
theExpr = theExpr || ");";
// Execute the code generated and placed into the character string variable
Eval( Parse( theExpr ) );