Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Ma table de données contient des entrées part_ID dans la colonne 1. Dans la colonne 2 apparaissent les 5 paramètres récapitulatifs - Min, Q1, Médian Q3, Max et les limites de test LSL, USL. Dans la colonne 1, l'ID de pièce est répété 7 fois (correspondant à 5 paramètres récapitulatifs + LSL et USL, total 7), après quoi l'ID de pièce suivant apparaît (et 7 chiffres correspondants dans la colonne 2).
Je ne veux pas changer le format du tableau de données (c'est-à-dire que je ne veux pas transposer).
Je souhaite créer un diagramme de tendance en boîte à moustaches (avec l'ID de pièce sur l'axe X) en utilisant les 5 paramètres récapitulatifs et les limites. Comment faire cela via JSL ?
Automatisation et scriptsles fenêtresRe : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Y a-t-il une raison spécifique pour ne pas changer le format des données pour quelque chose de mieux ?
Depuis

vers quelque chose de plus facile à gérer

Si vous n'avez aucun indicateur de quelle ligne correspond, êtes-vous sûr qu'elles sont toujours dans le même ordre ?
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi Merci. Mes données d'origine se présentent sous la forme de votre tableau du bas, mais en plus avec le nom du paramètre mesuré comme colonne supplémentaire. Dans ce formulaire, je sais comment faire les boîtes à moustaches en utilisant les 7 paramètres.
J'utilise la fonction Résumé () de JMP pour obtenir mes données sous la forme de votre tableau supérieur.
J'ai besoin de ce formulaire pour tracer d'autres graphiques dans le format souhaité où les données des paramètres mesurés (par exemple votre colonne 3 dans le tableau du haut) dans une colonne. Il existe plusieurs paramètres mesurés pour la même pièce avec des plages différentes (apparaissant dans des colonnes séparées) que je trace sur l'axe Y et le fait d'avoir uniquement les données pour différents paramètres mesurés dans des colonnes me permet d'avoir les différentes échelles de l'axe Y pour eux. JMP (avec ID de pièce sur l'axe X). Différents paramètres mesurés sont corrélés et un tel graphique aide à comprendre les tendances relatives.
L'espoir ci-dessus explique pourquoi mes données sont au format de votre tableau supérieur.
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Cet article pourrait donner quelques idées Création d'un boxplot à partir de valeurs déjà résumées .
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi . Merci. J'ai regardé la recette dans votre lien. La méthode décrite ne semble fonctionner que lorsque les données sont au format de votre deuxième tableau, ce qui n'est pas ce que je souhaite.
S'il est possible de demander à JMP de créer des boîtes à moustaches en utilisant Min, Q1, Median, Q3, Max donnés dans une colonne adjacente (étiquette dans l'exemple de jeu de données ci-joint) pour un ID de pièce donné (colonne 1 en pièce jointe) au lieu de cela, JMP calcule ces valeurs elle-même à partir de la répartition des valeurs pour chaque partie, je pense que j'obtiendrai ce que je veux.Est-ce possible de le faire via JSL ?
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Vous pouvez essayer de créer le boxplot en utilisant Rect() et Line() (il existe également une segmentation de boxplot qui peut fonctionner, mais vous devez simuler les données ou utiliser des fréquences).
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi Merci, je pense que le box plot seg peut être utilisé pour faire ce que je veux.
D'après l'exemple d'index de script, je ne comprends pas comment générer la boîte à moustaches pour chaque ID de pièce (sur l'axe des x) comme dans mon exemple de données (ci-joint précédemment)
Aurais-je besoin de parcourir l’ID de la pièce ? Dans quel cas, comment décider de la taille du cadre, de l'échelle ?
Ce serait utile si je pouvais obtenir un exemple de base en utilisant mes exemples de données.

Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Il se peut que la segmentation de la boîte à moustaches ne puisse être utilisée que pour créer une boîte à moustaches unique pour une boîte à cadre unique et qu'elle soit au centre.
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi Merci.
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Si vous êtes obligé d'utiliser le format de données dont vous disposez, vous pouvez toujours ajouter de nouvelles colonnes au tableau. Vous pouvez créer une colonne pour chacune des statistiques afin de suivre la première option du lien précédent ou ajouter deux colonnes (valeur + fréquence), puis suivre la deuxième option. Ou créez-le entièrement personnalisé à partir de différentes parties à l'aide d'un script graphique
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi . La seule raison d'avoir les données au format de votre tableau supérieur (et du mien qui est joint) est uniquement pour que je puisse avoir différentes échelles dans un groupe par tracé Y.
https://community.jmp.com/t5/Discussions/Can-you-change-y-axis-scale-independently-from-other-y-axis/td-p/17649
Je ne veux pas que vous ayez l'option Page alors je suis allé et j'ai suivi @txnelson La suggestion de mettre les données pertinentes sous la forme qu'il a suggérée, c'est-à-dire dans des colonnes séparées (en supposant que j'ai bien compris sa suggestion).
S'il existe un autre moyen sans utiliser Page ou @txnelson la suggestion de (un autre similaire ici ), Je suis tout ouïe
.
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi Merci pour vos suggestions sur ce sujet sur lequel je reviens car je dois conserver le format de données comme dans mon exemple de données joint dans ce fil plus tôt. Je peux obtenir presque ce dont j'ai besoin avec le script ci-dessous (il pourrait y avoir de meilleures façons de le faire, mais voici mon histoire). J'ai besoin d'aide pour deux choses.
- Je dois tracer une ligne noire verticale reliant Min et Max pour chaque ID de pièce (actuellement non sélectionné dans le filtre de données local, tableau de gauche ci-dessous). Lorsque Min/Max est sélectionné dans le filtre de données local (graphique de droite ci-dessous), ils sont reliés par une ligne noire verticale (à la place des points noirs maintenant sur le graphique de droite), j'arriverai presque à l'anatomie d'une boîte à moustaches, qui Je pense que c'est suffisant et adapté à son objectif. Comment obtenir cette ligne verticale via JSL pour chaque ID de pièce (V Line() ?) ?
- Deuxièmement, mes paramètres mesurés (courant, résistance dans les données d'exemple) dans les données réelles seront >40. Donc, je ne veux pas effectuer le réglage des couleurs de la légende comme je l'ai fait dans mon script. Comment définir la couleur de la légende sur noir par défaut (sinon JMP colore chaque groupe Y différemment et non comme j'ai défini les couleurs des marqueurs).
Names Default To Here (1);
clear log ();
dt = Current Data Table ();<BR />
//Set LSL/USL marker and color
dt << Row Selection(
Select where( Contains( :Label, "LSL" ) | Contains( :Label, "USL" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Red" );
dt << Clear Select;<BR />
// Set Q1/Q3 marker and color
dt << Row Selection(
Select where( Contains( :Label, "Q1" ) | Contains( :Label, "Q3" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Black" );
dt << Clear Select;<BR />
//Set Median arker and color
dt << Row Selection(
Select where( Contains( :Label, "Median" ) ),Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 0) << Colors( "Blue" );
dt << Clear Select;<BR />
// Plot chart
gb = Graph Builder(
Size( 404, 412),<BR /> Show Control Panel( 0 ),
Variables( X( :partID ), Y( :Resistance ), Y( :Current ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 37 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 35 ), Jitter( "None" ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == {"LSL", "Median", "Q1", "Q3", "USL"} )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
37,
Properties( 0, {Line Color( 0 )}, Item ID( "Resistance", 1 ) )
), Legend Model(
35,
Properties( 0, {Line Color( 0 )}, Item ID( "Current", 1 ) )
)}
)
)
);

Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Ce script supplémentaire ajouté ci-dessus donne ce qui est souhaité en utilisant V Line().
Exemple uniquement pour PartID =1 (graphique ci-dessous). Comment rendre cela automatique en boucle ?
gbr = gb << report;
// For FrameBox (1)
Q1_Part1_Para1 = 2.75;
Q3_Part1_Para1 = 3.1;
// For FrameBox (2)
Q1_Part2_Para1 = 250;
Q3_Part2_Para1 = 302;
PartNo = 1;
Eval(EvalExpr(gbr [Framebox (1)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part1_Para1, Q3_Part1_Para1);
)));
Eval(EvalExpr(gbr [Framebox (2)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part2_Para1, Q3_Part2_Para1);
)));
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Vous pouvez utiliser Summarize() pour obtenir des valeurs partID uniques. Ensuite, vous pouvez utiliser l'indice datatable avec une combinaison de Loc() pour obtenir des lignes pour un ID de pièce spécifique lors de la boucle. Ensuite, calculez/obtenez vos valeurs et ajoutez vos lignes
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi
>> Vous pouvez utiliser Summarize() pour obtenir des valeurs partID uniques.
D'ACCORD
>>Ensuite, vous pouvez utiliser l'indice datatable avec une combinaison de Loc() pour obtenir des lignes pour un ID de pièce spécifique lors d'une boucle.
Jamais utilisé Loc (). Est-ce que cela me donne la coordonnée X pour chaque partID. Un exemple avec mes données d'exemple serait très utile.
>> Ensuite, calculez/obtenez vos valeurs et ajoutez vos lignes.
Voulez-vous dire, calculez les coordonnées X pour chaque pièce car les autres nombres Min, Max, Q1, Q3 et Median sont déjà calculés.
De plus, dois-je parcourir chaque FrameBox ou existe-t-il une alternative plus simple ?
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Vos ID de pièce sont dans le même ordre dans le graphique que dans le tableau (et résumez), vous avez donc déjà la coordonnée x. Si toutes les valeurs dont vous avez besoin sont déjà calculées, vous pouvez simplement les récupérer à partir du tableau de données. Vous trouverez ci-dessous un exemple utilisant Summarize, Loc et l'abonnement datatable
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq_vals = by(:age)); // Summarize returns characters
For Each({uniq_val}, uniq_vals,
val_rows = Loc(dt[0, "age"], Num(uniq_val));
show(val_rows);
f_rows = val_rows[Loc(dt[val_rows, "sex"], "F")];
show(f_rows);
f_heights = dt[f_rows, "height"];
show(f_heights);
);
Vous n'avez que deux boîtes de cadre mais plusieurs lignes que vous souhaitez ajouter à l'intérieur de celles-ci, il ne devrait donc pas être nécessaire de faire une boucle sur les FrameBox (boucler sur les partIds)
Modifier:
Aussi, au lieu de Loc, vous pouvez utiliser << Get Rows Where car il est généralement plus facile à utiliser
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi . D'ACCORD. Merci. Je vais essayer (je reviendrai si je suis bloqué).
Dans mon ensemble de données actuel, le nombre de paramètres mesurés est > 50 (peut-être plus), donc si je devais tracer les 50 tracés de tendance des paramètres les uns sur les autres, il y aurait 50 FrameBox, d'où ma question sur la boucle sur les FrameBox.
De plus, pour mon PartID = 1, je propose d'utiliser le X= 0, pour la coordonnée X dans V Line() dans mon script ci-dessus. Est-ce ainsi que cela est censé être (c'est-à-dire que la coordonnée x pour la ligne V commence à 0 et non à 1, même si elle indique 1) ?
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?S'il y a autant de paramètres ayant une boucle supplémentaire, c'est une bonne idée.
Et pour le truc X = 0, je suggère de l'essayer. Voyez ce qui se passe (c’est de cette façon que vous en apprenez généralement le plus). Vous pouvez également voir dans les paramètres de l'axe X que la valeur est 0 et l'étiquette 1

Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?@jthi D'ACCORD. Merci. Une autre chose me dérange. J'ai désactivé la gigue dans mon script, mais les marqueurs supérieur (Q3) et inférieur (Q1) apparaissent toujours avec un décalage. Vous pouvez exécuter mon script avec la table de données ci-jointe avant de tester cela (je suis sur JMP 16.2).
Y a-t-il un autre paramètre de gigue que je dois désactiver ?
La gigue/le décalage est plus évident si j'utilise ce qui suit pour définir des marqueurs pour Q1 et Q3 (en essayant simplement d'obtenir la forme de la boîte avant de tracer la ligne verticale), mais même avec un marqueur horizontal, je vois un certain décalage. Est-ce que j'ai raté quelque chose ?
// Q1/Q3 marker and color
dt << Row Selection(Select where(Contains( :Label, "Q3" ) ),Match case( 1 ),Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Π" ) << Colors( "Black" );
dt << Clear Select;
dt << Row Selection(Select where( Contains( :Label, "Q1" ) ), Match case( 1 ), Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Џ" ) << Colors( "Black" );
dt << Clear Select;
Correction : Le décalage semble être dû au rendu du graphique par JMP. Étirer le graphique horizontalement corrige le décalage.
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?vérifier de cette façon
frame = (gbr)[FrameBox( 1 )];
seg = (frame << FindSeg( Marker Seg( 1 ) ));
{method, axis, limit, spacing, seed} = seg << Get Jitter();J'obtiens une valeur de "graine" même après avoir défini Jitter sur aucun
{"None", "XY", 1, 0, 184430754}Mes points sont-ils instables (ils semblent ainsi) ?
Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Votre gigue est définie sur Aucun

ce qui, je suppose, signifie qu'il ne devrait y avoir aucun bruit aléatoire ajouté

Re : Comment créer des Box Plots lorsque 5 paramètres récapitulatifs (Min, Q1, Médian Q3, Max) et Limites (LSL, USL) sont dans une colonne correspondant à un part_ID donné ?Ce script supplémentaire appelé par le script précédent (dans ce fil) fait ce que je voulais. Le script est spécifique à mes données mais montre un moyen de tracer V Line () dans une boucle sur différentes Framebox.
Le passage à BoxPlots sur Graphbuilder avec Q1, Q2 et Median sélectionnés dans le filtre de données local obtient des boxplots appropriés. La ligne V () relie le Max et le Min complétant l'anatomie d'une boîte à moustaches.Comme seuls Q1, Q2 sont sélectionnés et le reste des données ignoré, je pense que l'on obtient la bonne case (la sélection de plus de paramètres tels que Min et Max dans le filtre de données local donne une case incorrecte).
Names Default To Here (1);
Clear Log ();
setVLines_atMinMax = Function ( {gbr, FrameboxNo, PartNo, Min, Max}, {},
Eval(EvalExpr(gbr [Framebox (FrameboxNo)]<< Add graphics Script (
V Line (Expr(PartNo-1), Expr(Min), Expr(Max));
)));
);
gbr = gb << report;
nParts =5;
nc = ncols (dt); //number of coulms in my data table
For (j =1, j <=(nc-1), j++,
FrameboxNo = j;
for ( i = 1, i <= nParts, i++,
ind = (7*i-3); //show (ind);
ind_next = (7*i -3) + 1; //show (ind_next);
PartNo = Num(:PartID[ind]); //show (PartNo);
Min = Column(nc) [ind]; show (Min);
Max = Column(nc) [ind_next]; show (Max);
setVLines_atMinMax (gbr, FrameboxNo, PartNo, Min, Max);
);
nc = nc-1;
);
//show (FrameboxNo); show (nc);
