Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLLorsqu'il y a des données aberrantes, mon graphique est toujours mis à l'échelle en fonction du point de mélange ou du point maximum, ce qui rend le graphique invisible.
Est-il possible d'utiliser le script JSL pour définir dynamiquement l'axe Y du graphique de variabilité en fonction des paramètres USL et LSL limites déjà intégrés dans les paramètres ? S'il vous plaît, des conseils. Merci
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLVous devez vérifier si vous avez le nombre correct de colonnes, etc. avant le code qui provoque l'alerte, puis ajouter le code nécessaire pour résoudre le problème.Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLComment gérer « JMP Alert » au cas où j'invoque un seul élément/colonne ?
La "boucle for" provoque cette alerte
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLRe : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLCe faisant, j'ai le sentiment que l'affichage des graphiques prend alors plus de temps.
Merci encore pour votre soutien!
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLça à l'air bien pour moi. Je ne suis pas exactement sûr des autres améliorations, car je ne connais pas les données.Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLSalut Jim,
Merci beaucoup pour votre soutien !
J'ai amélioré votre code avec ceci, pour des graphiques plus beaux :
owr[i][AxisBox( 2 )] << Min( spec["LSL"] - 0.1 * (spec["USL"] - spec["LSL"]) ) <<
Max( spec["USL"] + 0.1 * (spec["USL"] - spec["LSL"]) ) << Inc( (spec["USL"] - spec["LSL"]) / 10 );
owr[i][AxisBox( 2 )] << Format( Best, 6 );
Est-ce quelque chose que vous feriez aussi ?
Ou existe-t-il une manière plus élégante ?
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLVeuillez consulter le script ci-dessous pour connaître les modifications requises pour gérer vos nouvelles demandes.Dans la plupart des cas, n'importe quelle liste de colonnes pourra être remplacée dans une requête Platform, par une fonction Eval(), qui exprimera la liste à JMP.Voir le
Eval( colList )
dans le script ci-dessous.
En supposant que vous ayez maintenant lu la section sur les arbres d'affichage dans le guide de script, les messages qui peuvent être transmis aux objets d'affichage sont documentés avec des exemples dans l'index de script.
Aide==>Index des scripts
En examinant les messages pour AxisBox(), vous verrez tous les messages disponibles.Parmi lesquels Inc().C'est ce changement de l'incrément de l'axe qui est utilisé pour garantir les valeurs dans le graphique après avoir modifié les valeurs des axes min et max.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colList = {"NPN1", "PNP1"};
For( i = 1, i <= N Items( colList ), i++,
// Turn on Show Limits
spec = Column( dt, colList[i] ) << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, colList[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
);
// create the graphs
ow = Oneway(
Y(
eval(colList)
),
X( :site ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
owr = ow << report;
// adjust the axes
For( i = 1, i <= N Items( owr ), i++,
spec = Column( dt, colList[i] ) << Get Property( "Spec Limits" );
(owr[i])[AxisBox( 2 )] << Min( spec["LSL"] ) << Max( spec["USL"] )
<< inc ((spec["USL"] - spec["LSL"]) / 10 );
);Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLMerci! Ça a marché.
1)
Pourriez-vous également m'aider à ajuster les paramètres de l'axe X à l'aide d'un script ?
Il n’y a aucune valeur entre LSL et USL.
Peut-être existe-t-il une stratégie pour ajuster automatiquement l'axe des x avec un incrément Tick/Bin significatif ?
2)
Est-il possible de donner colListe = { "NPN1" , "PNP1" } ; à
aïe = Sens Unique (
Oui (
: Nom ( "NPN1" ) ,
: Nom ( "PNP1" )
) , --> au lieu de :Name(), :Name()

Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLVoici un script qui devrait vous montrer comment spécifier correctement les axes.Le nouvel apprentissage que vous devrez étudier est la manipulation des arbres d’affichage.Ceci est documenté dans le Guide de script trouvé dans la bibliothèque de documentation JMP.
Aide==>Bibliothèque de documentation JMP

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colList = {"NPN1","PNP1"};
For(i=1,i<=N Items(colList),i++,
// Turn on Show Limits
spec = column(dt,colList[i]) << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
column(dt, colList[i]) <<
Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ),
Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
);
// create the graphs
ow = Oneway(
Y(
:Name( "NPN1" ),
:Name( "PNP1" )
),
X( :site ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
owr = ow << report;
// adjust the axes
For( i=1, i<= n items(owr),i++,
spec = column(dt,colList[i]) << Get Property( "Spec Limits" );
(owr[i])[AxisBox(2)] << min(spec["LSL"])<<MAX></MAX>
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLSalut,
comment modifier ce script ci-dessous pour mettre automatiquement à l'échelle le graphique en LSL et USL.
@martindemel

Oneway(
Y(
:Name( "test1" ),
:Name( "testn" )
),
X( :Corner ),
All Graphs( 0 ),
Plot Quantile by Actual( 1 ),
Line of Fit( 0 ),
Std Dev Lines( 1 ),
Legend( 0 ),
SendToReport(
Dispatch(
{"Normal Quantile Plot"},
"Oneway QuantilePlot",
FrameBox,
{Row Legend(
Corner,
Color( 1 ),
Color Theme( "" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLSalut,
Je souhaite utiliser la même solution pour mes graphiques de tendances, mais je rencontre des problèmes de syntaxe.
quelqu'un sait quels champs je dois modifier si le nom de ma colonne de limites est : "CENTERLINE", "LCL_HS", "UCL_HS" ?
et aussi si j'ai besoin d'un ajustement si je crée un graphique bivarié PAR colonnes ?
merci!
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLMerci Jim. Cela fonctionne parfaitement !Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLVoici un exemple de script montrant le code précis sur l'utilisation de l'USL et du LSL pour définir les paramètres des axes Max et Min.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Turn on Show Limits
spec = dt:NPN1 << Get Property( "Spec Limits" );
If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
dt:NPN1 <<
Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ),
Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);
);
// Build the Chart
vc = Variability Chart(
Y( :NPN1 ),
X( :lot_id ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 1 )
);
// Set the Min and Max
Report( vc )[axisbox( 1 )] << Max( spec["USL"] );
Report( vc )[axisbox( 1 )] << Min( spec["LSL"] );Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLSalut Txnelson,
Merci du conseil. Mais malheureusement, ce n'est pas la solution que je recherche. La boîte d'axe invitera l'utilisateur à saisir manuellement le min/max. Je veux que JSL se charge de la mise à l'échelle automatiquement en fonction des paramètres intégrés aux spécifications LSL et USL sans interaction humaine.
Existe-t-il une option pour le faire ?
Re : Mise à l'échelle automatique de l'axe Y du graphique de variabilité basée sur la limite des spécifications USL et LSLLa réponse simple est oui......voir
Aide ==> Index des scripts ==> Boîte d'axes
Voici un exemple tiré de l'index de script utilisant Bivariate, mais la même fonctionnalité est disponible pour le graphique de variabilité.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
axisbox = rbiv[axis box( 1 )];
axisbox << Max( 120 );