Ajouter une ligne de référence à partir de la table de référenceSalut, @txnelson
J'essaie de créer un graphique de tracé de variabilité et d'ajouter des lignes de référence avec des valeurs différentes pour chacun des graphiques individuels. Actuellement, je peux tracer la ligne de référence, mais le problème est que si la table de référence ne contient pas toutes les colonnes de test de la table de données, le script ne fonctionnera pas.
Voici ce que j'ai essayé et cela fonctionne si la table de référence contient tous les tests de la table de données :
Names Default To Here( 1 );
Clear Globals();
dt = Open("Data table.jmp"); // Open data table
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names( "String" );
For( q = 1, q <= N Items( Col_List ), q++,
If( Contains( Col_List[q], "Current" ) | Contains( Col_List[q], "Voltage" ),
Column( Col_List[q] ) << Set Selected( 1 );
Insert Into( colist, Col_List[q] );
)
);
// Var Chart
vc= dt << Variability Chart(
Y( (Eval( colist )) ),
X( :Wafer ID ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 )
);<BR />// Reference data table
dt1 = Open ("Reference table.jmp");
xb = Column(dt1, "Reference") << getValues;
// Loop to add reference line to the variability chart
For( i = 1, i <= N Items( vc ), i++,
Report( vc[i] )[Framebox( 1 )] << DispatchSeg( CustomStreamSeg( 3 ), {Line Width( 2 )} );
Report( vc[i] )[AxisBox( 1 )] << {Add Ref Line( xb[i], "Solid", "Green", "RTS", 2 )};
);Personnalisation de masseRe : Ajouter une ligne de référence à partir de la table de référenceIl y a quelques problèmes.
- Différentes plates-formes ont des arborescences différentes car elles ont des structures de sortie différentes.Par conséquent, le mappage aux différents objets dans la sortie est différent.
- Vous spécifiez dt comme pointeur vers la "table de données", mais plus tard dans le script, vous tentez d'exécuter le tracé de superposition, pointant vers une table de données référencée par une variable dt2, qui n'existe pas dans votre code.
- Dans votre code qui crée le tableau associatif, vous utilisez une variable de votre table de données de référence, appelée référence.Dans les exemples de données que vous avez fournis dans la discussion sur l'optimisation de la boucle, la variable de cette table de données est appelée Moyenne.
Vous trouverez ci-dessous une modification de votre code qui produit la sortie suivante

Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
dt=data table("Data Table");
// dt1 = Open("Reference table.jmp");
dt1=data table("Reference data table");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Overlay Plot
vc = dt << Overlay Plot( Y( Eval( colist ) ), No Overlay( 1 ),Ungroup Plots( 1 ) );
aa_refs = Associative Array(dt1:Tests << get values, dt1:mean << get values);
// Loop to add reference line to the variability chart
For(i = 14, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc)[AxisBox(1)] << Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2);
);
);
Veuillez prendre le temps de lire les arborescences d'affichage dans le Guide de création de scripts, disponible dans la bibliothèque de documentation JMP, dans le menu déroulant Aide.
Re : Ajouter une ligne de référence à partir de la table de référenceSalut @jthi ,
J'ai fatigué votre code sur les tracés superposés mais il semble y avoir une erreur. Aucune suggestion?
Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
// dt1 = Open("Reference table.jmp");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Overlay Plot
vc = dt2 << Overlay Plot( Y( Eval( colist ) ), No Overlay( 1 ),Ungroup Plots( 1 ) );
aa_refs = Associative Array(dt1:Tests << get values, dt1:Reference << get values);
// Loop to add reference line to the variability chart
For(i = 1, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc[i])[Framebox(1)] << DispatchSeg(CustomStreamSeg(3), {Line Width(2)});
Report(vc[i])[AxisBox(1)] << {Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2)};
);
);

Re : Ajouter une ligne de référence à partir de la table de référenceVoici une solution légèrement différente, en lisant directement la table de référence
Names Default To Here( 1 );
Clear Globals();
//dt = Open( "Data table.jmp" ); // Open data table
dt = Data Table( "data table" );
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names( "String" );
For( q = 1, q <= N Items( Col_List ), q++,
If( Contains( Col_List[q], "Current" ) | Contains( Col_List[q], "Voltage" ),
Column( Col_List[q] ) << Set Selected( 1 );
Insert Into( colist, Col_List[q] );
)
);
// Var Chart
vc = dt << Variability Chart(
Y( (Eval( colist )) ),
X( :Wafer ID ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 )
);// Reference data table
//dt1 = Open( "Reference table.jmp" );
dt1 = Data Table( "reference table" );
xb = Column( dt1, "Reference" ) << getValues;
// Loop to add reference line to the variability chart
For( i = 1, i <= N Items( vc ), i++,
//Report( vc[i] )[Framebox( 1 )] << DispatchSeg( CustomStreamSeg( 3 ), {Line Width( 2 )} );
testVal = Word( -2, Report( vc[i] )[Outline Box( 2 )] << get title, " " ) || " " || Word(
-1,
Report( vc[i] )[Outline Box( 2 )] << get title,
" "
);
testRow = dt1 << get rows where( :tests == testVal );
If( N Rows( testRow ) > 0,
Report( vc[i] )[AxisBox( 1 )] << Add Ref Line( dt1:Reference[testRow[1]], "Solid", "Green", "RTS", 2 )
);
);Re : Ajouter une ligne de référence à partir de la table de référenceVous pouvez boucler sur colist et vérifier si dt1 a cette valeur spécifique avec l'instruction if et si c'est le cas, ajoutez une ligne de référence en fonction de la valeur trouvée à partir de dt1. Voici une option utilisant Associative Array (vous devrez peut-être ajouter une mise à l'échelle à l'axe Y pour les graphiques de variabilité, car les lignes de référence peuvent être masquées en fonction de leur valeur).
Names Default To Here(1);
// dt = Open("Data table.jmp"); // Open data table
// dt1 = Open("Reference table.jmp");
// Loop to get column name Currents and Voltages
colist = {};
Col_List = dt << Get Column Names("String");
For(q = 1, q <= N Items(Col_List), q++,
If(Contains(Col_List[q], "Current") | Contains(Col_List[q], "Voltage"),
Column(Col_List[q]) << Set Selected(1);
Insert Into(colist, Col_List[q]);
)
);
// Var Chart
vc = dt << Variability Chart(
Y((Eval(colist))),
X(:Wafer ID),
Analysis Type("Choose best analysis (EMS REML Bayesian)"),
Show Range Bars(0),
Std Dev Chart(0),
Points Jittered(1)
);// Reference data table
aa_refs = Associative Array(dt1:Tests << get values, dt1:Reference << get values);
// Loop to add reference line to the variability chart
For(i = 1, i <= N Items(colist), i++,
If(Contains(aa_refs, colist[i]),
Report(vc[i])[Framebox(1)] << DispatchSeg(CustomStreamSeg(3), {Line Width(2)});
Report(vc[i])[AxisBox(1)] << {Add Ref Line(aa_refs[colist[i]], "Solid", "Green", "RTS", 2)};
);
);