Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et l'afficher sur un graphique ou dans une zone de texteBonjour, j'ai un script qui crée le graphique ci-joint de certains points de données et le superpose avec un graphique linéaire supplémentaire. Je dois maintenant être capable de calculer le delta entre les points hauts et bas dans plusieurs coordonnées x différentes. Je suis capable de faire le premier car il inclut toutes les valeurs de coordonnées x, mais je ne sais pas comment le faire uniquement pour les valeurs de coordonnées x entre les lignes calculées orange, ainsi que pour la seule courbe initiale sur les côtés gauche et droit à l’intérieur des calculs de la ligne orange. Ensuite, je voulais afficher ces valeurs sur le graphique si possible, ou dans une zone de texte qui s'affiche lorsque le graphique est réalisé. J'ai inclus quelques images qui aident à expliquer les 4 plages différentes à partir desquelles je dois calculer le delta, ainsi que mon script actuel. La ligne orange peut changer en fonction des données, car elle est basée sur une valeur saisie par l'utilisateur lors de l'exécution du script. Toute aide est grandement appréciée. Merci!



framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - framex_value/2) & :X coordinate < (76200 - framex_value/2) );
//dt << delete rows:
//FieldMat = matrix(Col Max(IntenCD)-(Col Min(IntenCD)));
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( FullMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Full field delta: " ), TextBox( Char( FieldMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// Determine X Matrix
xMat = matrix(76200 - (framex_value/2)) |/ matrix(76200 - (framex_value/2)) |/
matrix(76200 + (framex_value/2)) |/ matrix(76200 + (framex_value/2));
// The yMat is static
yMat = [1, 0.92, 0.92, 1];
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);</RETURN>Ingénierie Qualité et ProcédésRe : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteParfait merci @txnelson . Ces 2 changements ont fait l'affaire. Cela fonctionne parfaitement maintenant. Merci encore pour toute l'aide apportée à ce sujet !
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de textepar défaut, lorsque JMP crée une variable, comme votre xMat etc., la variable restera jusqu'à ce qu'elle soit modifiée.Et, si à la première exécution de votre code, la variable requise n'a pas été créée, lorsque vous la demanderez dans votre code, elle n'aura pas de valeur à fournir au programme, et alors certains calculs ne pourront pas Être exécuté.Cependant, si plus tard dans le script, la variable est définie, elle restera définie jusqu'à ce qu'elle soit supprimée ou modifiée.Par conséquent, lorsque vous exécutez le script une deuxième fois et que le code arrive au point où lors de la première exécution du script, il n'a pas pu trouver la variable requise, cette fois il la trouvera, car elle a été définie ultérieurement. heure dans le code lors de la dernière exécution du script.
J'ai trouvé un endroit possible où cela aurait pu se produire.Vous définissiez la variable dt après l'exécution des activités sur la table de données.J'ai déplacé la ligne de code plus haut dans le script, afin que le code puisse fonctionner lors d'une première exécution.J'ai également placé un "Effacer les symboles ()" comme première ligne du script.Cela effacera toutes les variables du code au début du script.Cela garantira que les valeurs de variables référencées devront avoir été créées dans cette exécution du code, puisque toutes les valeurs de la dernière exécution ont été effacées.Essayez le code et voyez s'il fonctionne.
Clear Symbols();
Names Default To Here( 1 );
ramex_value = "";
w = New Window( "Frame size X", // opens a window with a title and this content...
<<RETURN result=""> (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)),
dt:Normalized,
.
)
) - Col Max( dt:Normalized ) - Col Min( dt:Normalized ) + 1;
Col Min( If( dt:X coordinate > (76200 - (framex_value / 2)) & dt:X coordinate < (76200 + (framex_value / 2)), dt:Normalized, . ) );
// Graph Builer and Delta display
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( dt:X Coordinate ), Y( dt:Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( Boxed, {75000, .94}, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( Boxed, {75000, .93}, "Within Frame Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
w << closeWindow;
)
)
)
)
);</RETURN>Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteAinsi, après des tests plus approfondis avec mon script, il semble qu'il fonctionne parfaitement (la deuxième fois que je l'exécute sur les données), mais pas la première fois. Après la première exécution, il ne calcule ni n'affiche les deltas, mais la deuxième fois que j'exécute le script, cela fonctionne... Je suis confus. J'ai joint le code nettoyé, ainsi qu'une image de la première exécution sans résultat... et une image de la deuxième exécution réussie. Qu'est-ce qui me manque et qui empêche mon script de fonctionner correctement du premier coup ?
framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalized,
.
)
) - Col Max( :Normalized ) - Col Min( :Normalized ) +1;
Col Min(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalized,
.
)
);
// Graph Builer and Delta display
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( Boxed, {75000, .94}, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( Boxed, {75000, .93}, "Within Frame Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
w << closeWindow;
)
)
)
)
);</RETURN>

Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteMerci @txnelson .J'ai réussi à comprendre cela et cela fonctionne parfaitement. J'ai découvert que je devais mettre { } autour des coordonnées xy pour que le texte apparaisse dans le graphique. J’apprécie vraiment toutes vos connaissances et votre aide avec mon script !
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteCette explication supplémentaire est logique. Je vais travailler sur vos suggestions. Merci.
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texte
// Is the purpose of the display window below, only to display the values of overallDelta and withinOrangeDelta?
// That is all it is going to do. It does not allow for any data input, just displaying of those values
overallDelta = 22;
withinOrangeDelta = 15;
New Window( " Delta results: ",
modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), Text Box( Char( overallDelta, 7, 4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Full field delta: " ), Text Box( Char( withinOrangeDelta, 7, 4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Edge of field delta: " ), Text Box( Char( 0 ) ) ),
)
)
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
// The code below will create your X Coordinate by Normalized graph
// If you have generated the xmat and ymat matrices, it will draw your orange line on the chart
// Then at a fixed XY point on the graph, of 500,.92 it will add in the text "Overall Delta = nn.nnnn"
// It is likely, that different data from your sample data will make the positioning of the statistics
// inapproprate if you have a hardwired value of 500,.92 for the display. So you will need to determine
// what those values need to be. You can get the values by determining the minimum values in the data table
// or you can query the displayed graph to get the axis minimums and then set the position from there.
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
Text( 500, .92, "Overall Delta = " || Char( Format( overallDelta, 7, 4 ) ) );
Text( 500, .915, "Within Delta = " || Char( Format( withinOrangeDelta, 7, 4 ) ) );
);
Report( gb )[AxisBox( 2 )] << Min( .91 );
// I don't see any window reference called "w"
w << closeWindow; // just the dialog, not the reportRe : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de textePas de soucis, c'est ce que je me demandais.
Qu’en est-il du texte qui apparaît dans le graphique ? Je ne vois pas cela. Je suis capable de créer une fenêtre contextuelle qui s'ouvre avant le graphique avec les valeurs, mais j'ai vraiment aimé votre idée d'afficher ces valeurs sur le graphique afin qu'elles puissent être visualisées avec le graphique. Y a-t-il quelque chose qui me manque ?
J'ai inclus juste la fin du script pour référence.
Merci encore pour toute l'aide à ce sujet !
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( overallDelta, 7,4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Full field delta: " ), TextBox( Char( withinOrangeDelta, 7,4 ) ) ),
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
text ( 500,.92, "Overall Delta = " || char(format(overallDelta, 7,4)));
text ( 500,.915, "Within Delta = " || char(format(withinOrangeDelta, 7,4)));
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteOui.......apparemment, c'est ma faute de frappe.....désoléRe : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteAinsi, les instances dans le code où il est dit :Normalize, cela devrait en fait être :Normalized ?

Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteLa colonne normalisée est créée à partir du tableau de données que vous fournissez.Quelles données avez-vous utilisées pour créer les graphiques que vous montrez......la colonne "Normalisé" est utilisée comme l'une des valeurs de l'axe dans ces graphiques
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteMerci pour votre aide, mais j'ai encore quelques problèmes. Lorsque j'exécute le script, j'obtiens l'erreur suivante.
Nom non résolu : Normalize{16} lors de l'accès ou de l'évaluation de 'Normalize', :Normalize/*###*/
De plus, si je commente cette section qui pose problème, pour tester les commentaires d'affichage, ils n'apparaissent pas dans le graphique.
Pourriez-vous s'il vous plaît m'aider à comprendre le problème avec ceux-ci ?
merci.
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteGénial merci. Cela a l'air génial. Je vais l'essayer et voir comment cela fonctionne. J'apprécie vraiment l'aide à ce sujet.
Re : Formule de script JMP pour calculer le delta de plusieurs plages différentes à partir des coordonnées X d'un fichier .csv et afficher sur un graphique ou dans une zone de texteJ'ai ajouté du code à votre graphique (code non testé), qui calculera les deltas globaux et intra.Les calculs delta gauche et droit nécessitent les règles de définition des cases.
J'ai également ajouté un affichage très simple pour les 2 valeurs.
Dans les deux cas, je vous propose l'approche à adopter pour vous apporter ces prochaines améliorations de votre code.Je ne peux pas garantir un code parfait, mais vous devriez voir le concept et pouvoir l'exploiter à partir de là.
framex_value = "";
w = New Window( "Frame size X",// opens a window with a title and this content...
<<RETURN result=""> (76200 - framex_value/2) & :X coordinate < (76200 - framex_value/2) );
//dt << delete rows:
//FieldMat = matrix(Col Max(IntenCD)-(Col Min(IntenCD)));
New Window( " Delta results: ", modal,
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H List Box( Text Box( "Full plate delta: " ), TextBox( Char( FullMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Full field delta: " ), TextBox( Char( FieldMat ) ) ),
//Spacer Box( size( 1, 10 ) ), // a little vertical space
//H List Box( Text Box( "Edge of field delta: " ), TextBox( Char( 0 ) ) ),
))
);
// Determine X Matrix
xMat = matrix(76200 - (framex_value/2)) |/ matrix(76200 - (framex_value/2)) |/
matrix(76200 + (framex_value/2)) |/ matrix(76200 + (framex_value/2));
// The yMat is static
yMat = [1, 0.92, 0.92, 1];
// The overall delta
overallDelta = Col Max( :Normalized ) - Col Min( :Normalized );
// The delta between the lines
withinOrangeDelta = Col Max(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalize,
.
)
) - Col Max( :Normalized ) - Col Min( :Normalized );
withinOrangeDelta = Col Min(
If( :X coordinate > (76200 - (framex_value / 2)) & :X coordinate < (76200 + (framex_value / 2)),
:Normalize,
.
)
);
// The leftDelta and rightDelta calculations will be similar to the above withinOrangeDelta, but
// I don't know what the upper and lower boundry values of :Normalized are or what the interior
// boundrys for the calclations are
gb = dt << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :X Coordinate ), Y( :Normalized ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Report( gb )[FrameBox( 1 )] << Add Graphics Script(
Pen Color( "orange" );
Pen Size( 2 );
Line( xmat, ymat );
// Add the results to the chart
text ( 500,.92, "Overall Delta = " || char(format(overallDelta, 7,4)));
text ( 500,.915, "Within Delta = " || char(format(withinOrangeDelta, 7,4)));
);
report(gb)[AxisBox(2)] << min(.91);
w << closeWindow; // just the dialog, not the report
)
)
)
)
);</RETURN>