Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleSalut les gars,
Je voudrais savoir s'il est possible de tracer les valeurs inférieures, supérieures et moyennes directement dans la carte de contrôle (créée par le constructeur de cartes de contrôle) au lieu du tableau Afficher les résumés des limites.
Merci.
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleMerci Jim. Ça fonctionne maintenant!Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleLa syntaxe de la fonction "Summarize()" a changé dans les versions récentes de JMP. Il semble que cela pourrait être le problème. Modifier la déclaration
Summarize( dt, byPhase = by( :MyPhase ) );
pour
Résumer( byPhase = by( :MyPhase ) );
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleMerci. J'ai vérifié en anglais les données d'échantillon de cornichon toujours sans succès. J'étape par étape pour exécuter le script et obtenir le rapport suivant après avoir exécuté Summarize( dt/*###*/, byPhase = by( :MyPhase ) ). Je traduis le journal en anglais pour vous. Croyez-vous qu'il y a quelque chose qui ne va pas?
必须是赋值运算符 正在访问或计算“dt”, dt/*###*/
Doit utiliser l'opérateur d'affectation lors de la visite de "dt"
在以下脚本中,使用 /*###*/ 标记错误
dans le script suivant, utilisez /*###*/ pour marquer l'erreur
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleLe script recherche une boîte de contour spécifique avec le titre, en anglais, de "Mesure individuelle de l'acide".Votre sortie n'est évidemment pas en anglais.Le script ci-dessous modifie la référence à Outline Box(2).Il s'agit d'une référence absolue à la boîte de contour, tandis que "Mesure individuelle de l'acide" est une référence relative.Vous pouvez également essayer de remplacer "Mesure individuelle de l'acide" par

Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
addTxt = Expr(
framebox << Add Graphics Script(
Description( scriptNameTBD ),
Text Color( "Black" );
Text( Center Justified, {xTBD - 2, yTBD + .1}, txtTBD );
);
);
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )[Outline Box(2)][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )[Outline Box(2)][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )[Outline Box(2)][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
// Use a separate graphics script for each annotation so that they are more easily moved 'by hand'
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "LCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), LCL, Expr(txtTBD), LCLtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "Avg Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), Avg, Expr(txtTBD), Avgtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "UCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), UCL, Expr(txtTBD), UCLtxt));
);Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleLe JSL est le même que celui que vous avez publié auparavant. Vous pouvez trouver l'image du tableau ici. Comme vous voyez que le texte pour LCL, UCL et Average n'a pas été ajouté.
Merci.
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleJe n'ai ni accès à JMP 11 ni à un Mac, j'aurai donc besoin de votre aide. Le message pointe vers un morceau de code qui tente de lire la LCL à partir de la table de sortie affichée. Pouvez-vous s'il vous plaît fournir l'image du tableau qui a été généré par la carte de contrôle qui contient les limites ?
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleJ'ai essayé le JSL sur mon Mac JMP 11. Cependant, il semble que les textes aient été ajoutés avec succès dans le tableau. Dans la fenêtre du journal, j'obtiens les informations d'erreur suivantes et j'ai dit que je ne pouvais pas calculer l'indice. Pouvez-vous me donner une explication ?
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )[/*###*/"Individual Measurement of Acid"][Number Col Box( i )
] << obtenir)[1] ;
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôle@ian_jmp
Très bel ajout !
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleTrès sympa Jim !
J'ai pris la liberté d'ajouter à votre code afin qu'il y ait un script graphique séparé pour chaque annotation :

Cela permet de déplacer les annotations "à la main" pour éviter toute collision (Cliquez avec le bouton droit sur la zone graphique, sélectionnez "Personnaliser" et modifiez les valeurs x et y dans les scripts à votre goût).
Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
addTxt = Expr(
framebox << Add Graphics Script(
Description( scriptNameTBD ),
Text Color( "Black" );
Text( Center Justified, {xTBD - 2, yTBD + .1}, txtTBD );
);
);
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
// Use a separate graphics script for each annotation so that they are more easily moved 'by hand'
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "LCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), LCL, Expr(txtTBD), LCLtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "Avg Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), Avg, Expr(txtTBD), Avgtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "UCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), UCL, Expr(txtTBD), UCLtxt));
);
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleVoici un script très approximatif qui extraira les valeurs du tableau des limites et les placera sur le graphique. Je vous suggère de prendre le temps de lire le Guide de script en utilisant le code ci-dessous pour savoir exactement comment le code fait ce qu'il fait.
Aide==>Livres==>Guide de script

Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
framebox << Add Graphics Script(
Text Color( "Black" );
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
Text( Center Justified, {PhaseMaxRowList[i] - 2, LCL + .1}, LCLtxt );
Text( Center Justified, {PhaseMaxRowList[i] - 2, Avg + .1}, Avgtxt );
Text( Center Justified, {PhaseMaxRowList[i] - 2, UCL + .1}, UCLtxt );
);
);Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleRe-bonjour,
Ainsi, l'ancien logiciel que j'ai utilisé dans le passé est Minitab.
Répondant à votre question, les valeurs sont tracées automatiquement à partir du logiciel et également par phase (voir l'image ci-dessous).
Dans l'exemple que j'ai partagé auparavant, il n'y a pas de phases.
Je sais que j'en ai trop demandé, mais pourriez-vous me dire comment inclure ces actions (supprimer les valeurs de table et de tracé dans les graphiques) à l'aide d'un script ?
Merci encore.

Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleLes valeurs peuvent être ajoutées au graphique. S'il n'y a pas de phases, les valeurs sont affichées dans le cadre du graphique

Mais si les données ont des phases, les valeurs, comme vous le soulignez, se trouvent dans un tableau à côté du graphique, et vous les voulez sur le graphique. Si votre ancien logiciel vous permettait d'ajouter manuellement les valeurs, vous pouvez faire de même dans JMP en annotant simplement le graphique.

Si vous avez besoin que cela soit fait par programmation, un script peut être utilisé pour lire simplement les valeurs du tableau affiché et les placer sur le graphique IR.
J'ai remarqué dans votre exemple de votre ancien logiciel, qu'un seul ensemble de limites était affiché, même s'il semblait qu'il y avait différentes phases. Était-ce parce que les limites étaient les mêmes pour toutes les phases ?
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleC'est moi qui ai mal compris. Ce sujet est arrivé avant .
Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôle
Salut, merci pour la réponse rapide.
Je pense que je ne suis pas très clair dans mon explication. Je dois tracer les valeurs des lignes inférieure, supérieure et moyenne.
Voir ci-dessous l'exemple que je recherche. A gauche, le logiciel que j'ai utilisé dans le passé.
Si je peux tracer les valeurs du tableau Afficher les limites des résumés, je peux supprimer le tableau à signaler (la meilleure mise en page à mettre dans une présentation).

Re : Tracer les limites inférieures / supérieures et la moyenne dans une carte de contrôleVous pouvez double-cliquer sur l'axe vertical et ajouter des lignes de référence, ou ajouter un script graphique personnalisé à la zone de graphique en cliquant dessus avec le bouton droit de la souris. Pour la deuxième option, faites 'Help > Scripting Index' et recherchez 'H Line'.