J'ai regardé une vidéo en direct et essayé de créer une carte de contrôle comprenant les lignes verticales et les commentaires (annotations). J'ai les lignes mais les commentaires sont tous foirés. J'ai essayé un certain nombre de choses mais sans succès. Pouvez-vous s'il vous plaît voir le fichier joint, le code et me faire savoir quel est le problème?
@Sebnem ,
J'ai utilisé votre script. Il y a 2 problèmes principaux. JMP Control Chart utilise la séquence pour l'axe X et TestDate est utilisé pour définir les étiquettes. Ainsi, la position x de votre étiquette doit être Row () - 1, identique à la ligne verticale. J'ai commenté Right Justified et utilisé moins 0,75 pour que l'étiquette soit juste à droite de la ligne verticale. Supprimez le commentaire sur Justifié à droite et faites-le Row () - 1 pour que les étiquettes apparaissent à gauche de la ligne verticale.
La deuxième erreur est la position y. Votre facteur multiplicateur de 1,2 * Col maximum (: Avg) est> 1500. J'ai ajouté une valeur fictive, vous voudrez peut-être considérer Col Max (: Avg) +0.10 * Col Std Dev (: Avg).
Donc, vos problèmes étaient x et y pos. Il s'agit d'une méthode simple pour ajouter des commentaires à l'aide des informations de colonne. Cependant, ce n'est que comme journal que la table est ouverte.
Supposons que vous journalisiez le graphique résultant, que vous fermiez la table de données et le rapport de la carte de contrôle et que vous fassiez une mise à jour comme la modification de la largeur de ligne des limites de contrôle. les lignes et les commentaires disparaissent. Ou si vous enregistrez le journal et l'envoyez à un autre ou l'ouvrez dans une nouvelle session, à nouveau les étiquettes et les lignes ont disparu.
Afin de conserver ces lignes et ce texte, les valeurs et non les références à la table de données doivent être utilisées. J'ajouterai un deuxième script qui utilise des valeurs et des références. Mais cela devrait montrer ce qui n'a pas fonctionné avec votre script.
Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Avg"},
"IR Chart of IM",
FrameBox,
{Add Graphics Script( 2, Description( "Script" ), Empty() ),
Add Graphics Script(
3,
Description( "Script" ),
For Each Row(
If( Is Missing( :comment ) == 0,
V Line( Row() - 1 )
)
);
For Each Row(
If( Is Missing( :comment ) == 0,
Text(
//Right Justified,
{Row()-0.75, Col Maximum( :Avg )+ 1.005},
:Comment
)
)
);
), Grid Line Order( 5 ), Reference Line Order( 6 )}
)
)
);
@Sebnem ,
Il existe plusieurs méthodes pour créer le script (expression) qui contient les valeurs incorporées pour la ligne verticale et le texte, et non des références aux lignes et aux colonnes,
Les fonctions JSL pour les expressions [Substitute (), NameExpr (), EvalExpr (), Expr ()] et les fonctions de caractères JSL qui convertissent le texte en expressions JSL [Concat (), ConcatTo (), Eval Insert () and Parse] sont bonnes pour apprendre.
cc= Control Chart(
Sample Label( :TestDate ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Avg, Individual Measurement )
);
rcc = report(cc);
scrp = Expr(Add Graphics Script(3,
Description( "PM Labels" )));
//get y placement = axis max - 0.5* axis inc
ypos = (rcc[AxisBox(1)]<< Get Max) - 0.5* (rcc[AxisBox(1)] << Get Inc);
txtcmd = "";
For Each Row(
If( Is Missing( :comment ) == 0,
txtcmd ||= EvalInsert("\[
V Line( ^Row() -1^ );
Text(
//Right Justified,
{ ^Row() - .75^, ^ypos^},
"^:comment(Row())^");]\")
)//end if
); //end for each row
show (txtcmd ); //see log
InsertInto(scrp, Parse(txtcmd));
show (scrp ); //see log
txtxp = Substitute(Expr(rcc[FrameBox(1)] << cmd), Expr(cmd), NameExpr(scrp));
Show(NameExpr(txtxp));
Eval(txtxp);
Notez qu'au lieu d'utiliser For Each Row (), un idx = dt << get rows où (! Is Missing (: comment)) pourrait être utilisé pour trouver la plus petite liste de lignes avec des commentaires.

@ gzmorgan0
Cela fonctionne comme un champion!
Je vous remercie!