Sélecteur de colonnes de script pour accéder aux modifications de la variable Y sur une carte de contrôleJ'ai un tableau de données avec de nombreuses réponses (nombreuses colonnes). Tous sont valables pour faire l’objet d’une carte de contrôle.
Lorsque j'ajoute un sélecteur de colonnes, je peux, comme prévu, basculer facilement entre les réponses (différentes colonnes) pour mettre à jour la carte de contrôle afin de pouvoir consulter immédiatement la variable qui m'intéresse.
Le seul inconvénient est que l'axe des x a toujours, par défaut, la même longueur mais le nombre de données dans chaque colonne varie ; parfois beaucoup mais parfois non.
Pour adapter l'axe des X au nombre de données dans une colonne donnée, je peux faire ceci :
nData = N Rows() - Col N Missing( Column( 1 ) );
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << Max( nData + 3 ) << inc( Ceiling( (nData + 3) / 15 ) );
Cela fonctionne très bien pour la première carte de contrôle, mais dès que je sélectionne une autre variable à l'aide du sélecteur de colonnes, l'axe des x est encore une fois trop long et revient à son paramètre par défaut. (Si N Rows() vaut par exemple 3 000 mais que pour une variable j'ai 60 données, le graphique résultant semble idiot car l'axe des X est beaucoup trop long.)
En utilisant JSL, comment puis-je créer un script pour que chaque fois que je sélectionne une autre colonne à l'aide du sélecteur de colonne, je puisse utiliser le code ci-dessus (ou équivalent) pour ajuster l'axe des X afin de bien s'adapter au nombre de données réelles pour la variable en question ?
Je vois que cette syntaxe "ColumnSwitcherObject << Get Current;" renvoie le nom de la colonne mais comment accéder avec JSL à chaque mise à jour à l'aide du sélecteur de colonne ?
Merci pour toute aide.
Automatisation et scriptsPersonnalisation de masseIngénierie Qualité et ProcédésRe : Sélecteur de colonnes de script pour accéder aux modifications de la variable Y sur une carte de contrôleMerci, Jim. Cela fonctionne très bien maintenant.
Re : Sélecteur de colonnes de script pour accéder aux modifications de la variable Y sur une carte de contrôlePlutôt que de fixer
ccReport = cc << Report;
Je pense que vous devriez le référencer à partir de la source lorsque vous l'utilisez
report(cc)[AxisBox(1)] << max(X+1);
Vous trouverez ci-dessous un exemple de script qui récupère les références correctes de cc
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>Re : Sélecteur de colonnes de script pour accéder aux modifications de la variable Y sur une carte de contrôleMerci, Jim.
En utilisant le framebox, comme vous le suggérez, je peux en effet afficher dans le log intégré la colonne sélectionnée pour mettre à jour la carte de contrôle. (J'ai 12 colonnes entre lesquelles je voudrais basculer et chaque colonne a un nombre de données différent, d'où le souhait de redimensionner l'axe des x dans chaque cas pour refléter le nombre de données dans la colonne sélectionnée.)
Je capture la colonne sélectionnée assez facilement :
ccReport[FrameBox(1)]<< add graphics script(
cName = cs << Get Current;
show(cName);
If(cName == "JW004",
show("JW004 selected");
,
cName == "JW001",
show("JW001 selected");
,
);
Dans d'autres parties de la syntaxe, je peux facilement modifier l'axe des x en utilisant par exemple
ccReport = cc << Report;
axisbox = ccReport[axis box( 1 )];
axisbox << max(x+1); // where x is the no. of data in the column
Le problème arrive si je mets la syntaxe axisbox dans la framebox. L'une des erreurs est
Send Expects Scriptable Object in access or evaluation of 'Send' , ccReport[axis box( 1 )] << /*###*/Max( 200 ) /*###*/
J'ai essayé quelques choses mais en vain. Avez-vous des conseils pour que je puisse continuer à accéder à la zone d'axe à partir du script graphique ? Ce serait très apprécié.
Re : Sélecteur de colonnes de script pour accéder aux modifications de la variable Y sur une carte de contrôleJe pense que vous pouvez résoudre votre problème en attachant un script graphique au FrameBox() dans la carte de contrôle.Le script s'exécutera chaque fois que quelque chose sera modifié dans FrameBox().Vous trouverez ci-dessous un script simple sur lequel je pense que vous devriez pouvoir vous appuyer
names default to here(1);
dt=current data table();
cc = Control Chart Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Show Capability( 0 ),
Variables( Y( :weight ) ));
cs = cc << Column Switcher( :weight, {:height, :weight} );
report(cc)[FrameBox(1)]<< add graphics script( show(cs<<GET current=""></GET>