J'ai regardé une vidéo à l'antenne et j'ai essayé de créer une carte de contrôle comprenant les lignes verticales et les commentaires (annotations). J'ai compris les lignes mais les commentaires sont tous foirés. J'ai essayé plusieurs choses mais sans succès. Pouvez-vous s'il vous plaît voir le fichier ci-joint, le code et me faire savoir quel est le problème ?
@gzmorgan0
Cela fonctionne comme un champion !
Merci!
@Sebnem ,
Il existe plusieurs méthodes pour créer le script (expression) contenant les valeurs intégrées pour la ligne verticale et le texte, et non les 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() et Parse] sont utiles 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 Where ( !Is Missing( :comment ) ) pourrait être utilisé pour trouver la plus petite liste de lignes avec des commentaires.

@Sebnem ,
J'ai utilisé votre script. Il y a 2 problèmes principaux.JMP Control Chart utilise une séquence pour l'axe X et TestDate est utilisé pour définir les étiquettes.La position x de votre étiquette doit donc ê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 Right Justified et définissez-le sur 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 > 1 500.J'ai ajouté une valeur factice, vous voudrez peut-être considérer Col Max(:Avg) +0,10 * Col Std Dev(:Avg).
Vos problèmes étaient donc x et y pos. Il s'agit d'une méthode simple pour ajouter des commentaires à l'aide des informations de colonne. Cependant, il ne s'agit que du journal dans la mesure où la table est ouverte.
Supposons que vous journalisiez le graphique résultant, fermiez la table de données et le rapport de la carte de contrôle et effectuiez toute 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 si vous l'ouvrez dans une nouvelle session, encore une fois, les étiquettes et les lignes ont disparu.
Afin de conserver ces lignes et ce texte, ce sont les valeurs, et non les références au tableau de données, qui 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 )}
)
)
);