Referenzlinie aus der Referenztabelle hinzufügenHallo, @txnelson
Ich versuche, ein Variabilitätsdiagramm zu erstellen und Referenzlinien mit unterschiedlichen Werten für jedes einzelne Diagramm hinzuzufügen. Derzeit kann ich die Referenzlinie zeichnen, aber das Problem besteht darin, dass das Skript nicht funktioniert, wenn die Referenztabelle nicht alle Testspalten aus der Datentabelle enthält.
Folgendes habe ich versucht und es funktioniert, wenn die Referenztabelle alle Tests aus der Datentabelle enthält:
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 )};
);MassenanpassungBetreff: Referenzzeile aus der Referenztabelle hinzufügenEs gibt ein paar Probleme.
- Verschiedene Plattformen haben unterschiedliche Baumstrukturen, da sie unterschiedliche Ausgabestrukturen haben.Daher ist die Zuordnung zu den verschiedenen Objekten innerhalb der Ausgabe unterschiedlich.
- Sie geben dt als Zeiger auf die „Datentabelle“ an, aber später im Skript versuchen Sie, den Overlay-Plot auszuführen, der auf eine Datentabelle zeigt, auf die von einer Variablen dt2 verwiesen wird, die in Ihrem Code nicht vorhanden ist.
- In Ihrem Code, der das assoziative Array erstellt, verwenden Sie eine Variable aus Ihrer Referenzdatentabelle namens „Referenz“.In den Beispieldaten, die Sie in der Diskussion zur Optimierungsschleife bereitgestellt haben, heißt die Variable in dieser Datentabelle „Mittelwert“.
Nachfolgend finden Sie eine Änderung Ihres Codes, die die folgende Ausgabe erzeugt

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);
);
);
Bitte nehmen Sie sich die Zeit, sich über Anzeigebäume im Skripthandbuch zu informieren, das in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ verfügbar ist.
Betreff: Referenzzeile aus der Referenztabelle hinzufügenHallo @jthi ,
Ich habe Ihren Code für Overlay-Plots müde gemacht, aber es scheint ein Fehler vorzuliegen. Irgendwelche Vorschläge?
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)};
);
);

Betreff: Referenzzeile aus der Referenztabelle hinzufügenHier ist eine etwas andere Lösung: Lesen Sie direkt die Referenztabelle
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 )
);
);Betreff: Referenzzeile aus der Referenztabelle hinzufügenSie könnten Colist durchlaufen und mit der if-Anweisung prüfen, ob dt1 diesen bestimmten Wert hat. Wenn dies der Fall ist, fügen Sie eine Referenzzeile basierend auf dem von dt1 gefundenen Wert hinzu. Hier ist eine Option, die assoziatives Array verwendet (möglicherweise müssen Sie für die Variabilitätsdiagramme eine Skalierung zur Y-Achse hinzufügen, da Referenzlinien abhängig von ihrem Wert ausgeblendet werden können).
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)};
);
);