Lignes d'événements et commentaires sur les cartes de contrôle
Annoter des cartes de contrôle avec des événements connus ? Je suis continuellement confronté à des situations dans lesquelles je dois ajouter des lignes d'événements à un graphique. Celles-ci sont distinctes des phases car je n'ai pas besoin de recalculer la moyenne et les limites de contrôle, j'ai juste besoin d'un marqueur pour montrer que quelque chose s'est produit. Il existe également des cas où je dois étiqueter des points sur un graphique de manière automatisée et pratique. Ce blog couvre quelques scripts qui peuvent être ajoutés aux graphiques de cartes de contrôle pour faciliter le dessin de lignes d'événements et l'ajout de commentaires aux graphiques.

La première étape pour personnaliser un graphique consiste à cliquer avec le bouton droit à l'intérieur du graphique et à sélectionner Personnaliser. La boîte de dialogue Personnaliser le graphique apparaît. En cliquant sur l'icône « + » en haut à gauche, vous ouvrirez un script vierge et c'est ici que vous pourrez coller les exemples discutés ci-dessous.Ce premier exemple nécessite que vous ayez une colonne de caractères appelée « Commentaire » dans votre tableau. Lorsqu'il y a une valeur dans cette colonne, une ligne verticale sera tracée sur votre graphique comme dans l'exemple ci-dessus.

La deuxième étape consiste à examiner quelques scripts personnalisés qui peuvent être ajoutés à cette fenêtre. Chaque ensemble d'instructions ou argument doit être collé avec un point-virgule. Un bon endroit pour apprendre à utiliser ces scripts personnalisés dans un graphique est la liste déroulante Exemples et modèles dans la fenêtre de dialogue. De plus, l'index des scripts, sous l'onglet Aide, contenait des détails sur chacune des fonctions. Gardez à l'esprit que cette petite fenêtre de script est assez limitée, donc après avoir appliqué les modifications, pensez à enregistrer le script de rapport dans la fenêtre de script pour continuer l'édition. Tous les scripts personnalisés ajoutés au graphique apparaîtront également dans le script des objets de rapport. Cette boîte de dialogue facilite les ajouts au graphique sans avoir à connaître beaucoup de JSL ni à manipuler le script de l'objet de rapport.
Script de graphique personnalisé 1 : ajout d'une ligne
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row() ) ) );
Explication:
- For Each Row() : cela permet à la formule d'être évaluée à chaque ligne plutôt qu'au niveau de la colonne.
- Is Missing() : cette fonction renvoie un « 0 » si la ligne est vide et un « 1 » si elle ne l'est pas. Si la ligne n'est pas manquante (c'est-à-dire = « 0 »), alors la ligne V est évaluée et une ligne est tracée.
- V Line() : vérifiez l'index de script pour celui-ci, il y a beaucoup d'options intéressantes à utiliser. Dans ce cas, je ne lui donne qu'un seul numéro, il tracera donc une ligne verticale sur tout le cadre à ce numéro. (il n'y a pas de numéro, n'est-ce pas ?)
- Row() : cette fonction renvoie le numéro de ligne. J'utilise ce numéro de ligne comme endroit où la ligne verticale est tracée à travers le cadre.
Script graphique personnalisé 2 : ajout d'étiquettes aux lignes
For Each Row( If( Is Missing( :Comment ) == 0, Text( Right Justified, {row(),
Col Maximum( :Data ) * 1.2},:Comment)));
Explication:
- For Each Row() : cela permet à la formule d'être évaluée à chaque ligne plutôt qu'au niveau de la colonne.
- If() : Il s’agit d’une fonction classique « If, Then, Else ». Si la condition est vraie, faites la première chose, ou bien faites la deuxième. Sauf qu’ici il n’y a pas d’« autre », donc si la condition est vraie, alors la première chose se produit ou bien rien ne se passe.
- Is Missing() : cette fonction renvoie un « 0 » si la ligne est vide et un « 1 » si elle ne l'est pas. Ici, si la ligne est manquante, rien ne se passe, mais si elle ne manque pas, la fonction texte est évaluée.
- Text() : Encore une fois, vérifiez l'index de script pour tous les arguments qui peuvent être inclus ici, ainsi que quelques bons exemples. Ici nous allons mettre le texte aux coordonnées Y et X, et le texte est dans la colonne :Comment.
- Row() est la position x et la position y est le maximum (Col Maximum()) de la colonne :Data multiplié par 1,2. Cela fait apparaître le texte un peu au-dessus des points de données.
Script graphique personnalisé 3 : ajout d'étiquettes aux points de données.
Il est probablement préférable et plus facile d'utiliser simplement les propriétés de colonne et de ligne pour étiqueter les points de données, mais dans certains cas, une solution scriptée comme celle-ci est tout à fait complexe.
For Each Row(If( Is Missing( :Note ) == 0, If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note ))));
Explication:
- Cela devient un peu sophistiqué. Dans cette expression, il y a une instruction If imbriquée. Si Note n'est pas manquant et que :Data est inférieur ou égal à la moyenne de la colonne de :Data, alors faites en sorte que le texte dans :Note soit en dessous du point de données, ou bien faites en sorte que le texte dans :Note soit au-dessus du point de données.
- Cela semble meilleur sur le graphique de cette façon, mais dans cet exemple, cela commence à paraître un peu plus compliqué qu'il ne devrait l'être.
- Une version plus simple ressemblerait à ceci :
For Each Row(If( Is Missing( :Note ) == 0, Text( Right Justified,{Row()+1,:Data}, :Note );
Le « row()+1 » déplace le texte à droite du point de données
Exemple de script de carte de contrôle
Le tableau de ce script doit comporter les colonnes suivantes. Un exemple de tableau est joint.
- ID, numéros de ligne séquentiels
- Données, une colonne avec vos données à suivre
- Commentaires, une colonne de commentaires peu peuplée pour les lignes verticales
- Notes, une colonne de notes peu peuplée pour des points de données spécifiques
Ce script génère la carte de contrôle dans la figure ci-dessus.
Control Chart(
Sample Label( :ID ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Data, Individual Measurement ),
SendToReport(
Dispatch(
{"Individual Measurement of Data"},
"IR Chart of IM",
FrameBox,
{Frame Size( 800, 200 ), Add Graphics Script(
1,
Description( "Script" ),
For Each Row( If( Is Missing( :Comment ) == 0, V Line( Row() ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, {Row(), Col Maximum( :Data ) * 1.2},:Comment ))
);
For Each Row(
If( Is Missing( :Note ) == 0,
If( :Data <= Col Mean( :Data ),
Text( Right Justified,{Row(),:Data-:Data*1.1}, :Note ),
Text( Right Justified,{Row(),:Data * 1.1}, :Note )))
);
), Grid Line Order( 2 ), Reference Line Order( 3 )}
),
Dispatch( {"Individual Measurement of Data"}, "IR Chart of IM", FrameBox( 2 ),
{Frame Size( 72,200)})))
1. Oui, qu’ajouteriez-vous ?
2. Je suis sûr qu'il existe un moyen de le faire indirectement. Je pense qu'il existe un moyen d'interroger quelles colonnes ont été utilisées pour créer un rapport et de capturer le nom de la colonne de cette façon. Ajoutez ensuite le script personnalisé au graphique avec une référence à la colonne de données.
2. Ce serait plus facile si je parcourais une liste de variables et que j'incluais ensuite la référence à la colonne actuelle dans le script personnalisé.
Salut Byron, une autre chose (2 en fait !!), est-il possible d'ajouter un slogan pour le "Script graphique personnalisé 3 : Ajout d'étiquettes aux points de données". et existe-t-il une méthode de script dans laquelle vous n'êtes pas obligé de nommer exactement l'axe y (par exemple ":Data"), mais elle prend par défaut le nom de la colonne
Bravo Ian
Parfait, ça marche, alors bravo
Ian,
Je ne suis pas sûr de la cause de ce problème (pas encore assez de café), mais cela va résoudre le problème.
Il s'agit du script sous le menu de personnalisation.
For Each Row( If( Is Missing( :Comment ) == 0, V Line( row()-1 ) ) );
For Each Row(
If( Is Missing( :Comment ) == 0,
Text( Right Justified, { row()-1, Col Maximum( :Data ) * 1.2}, :Comment )
)
);
J'ai remplacé la colonne :ID par row()-1, pour utiliser le numéro de ligne pour l'emplacement, puis je l'ai décalé d'un numéro.
Bonjour Byron,
J'ai essayé de copier le script dans le générateur de graphiques SPC
Je vous ai envoyé un lien pour le fichier et j'ai les commentaires suivants
1_Carte de contrôle par ID : Ceci est votre carte de contrôle non modifiée - tout va bien

2_Carte de contrôle par ID & Générateur de cartes de contrôle : Il s'agit du script de (#1) copié dans le générateur de cartes - les lignes verticales sont décalées d'un endroit sur l'axe des x, voir les deux premières causes spéciales
Générateur de cartes de contrôle

3_Carte de contrôle par ID et générateur de carte de contrôle AS Numérique/Continu : Si je change l'ID de Numérique/Ordinal en Numérique/Continu, alors tout va bien

4_Control Chart by ID & Control Chart Builder AS Numeric/Continuous Alpha/numeric) : Mais je veux tracer sur le numéro de lot alpha/numérique de l'axe X, cela décale à nouveau

Ça me rend dingue, pouvez-vous m'aider, je vous envoie l'emplacement du fichier
https://1drv.ms/u/s!Au2FkmkZvSi-sA8j_g625J1VFdtw?e=0UPtz6
Bravo Ian