Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitWenn es Ausreißerdaten gibt, wird mein Diagramm immer auf den Misch- oder Maximalpunkt skaliert, wodurch das Diagramm nicht sichtbar ist.
Ist es möglich, ein JSL-Skript zu verwenden, um die Y-Achse des Variabilitätsdiagramms dynamisch basierend auf den Parametern USL und LSL-Grenzwert festzulegen, die bereits in den Parametern eingebettet sind? Bitte um Rat. Danke
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitSie müssen vor dem Code, der die Warnung auslöst, überprüfen, ob die richtige Anzahl an Spalten usw. vorhanden ist, und dann den Code hinzufügen, der zur Behebung des Problems erforderlich ist.Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitWie gehe ich mit „JMP Alert“ um, wenn ich nur ein Element/eine Spalte aufrufe?
Die „for-Schleife“ verursacht diese Warnung
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitBetreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitDabei habe ich das Gefühl, dass die Anzeige der Grafiken dann länger dauert.
Nochmals vielen Dank für Ihre Unterstützung!
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitFür mich sieht es gut aus. Über andere Verbesserungen bin ich mir nicht ganz sicher, da ich die Daten nicht kenne.Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHallo Jim,
Vielen Dank für Ihre Unterstützung!
Ich habe Ihren Code um Folgendes erweitert, um die Grafiken besser aussehen zu lassen:
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 );
Würden Sie das auch tun?
Oder gibt es einen eleganteren Weg?
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitDie für die Bearbeitung Ihrer neuen Anfragen erforderlichen Änderungen finden Sie im folgenden Skript.In den meisten Fällen kann jede beliebige Spaltenliste in eine Plattformanforderung mit einer Eval()-Funktion eingesetzt werden, die die Liste an JMP ausdrückt.Siehe die
Eval( colList )
im Skript unten.
Vorausgesetzt, Sie haben jetzt den Abschnitt über Anzeigebäume im Skripthandbuch gelesen, sind die Nachrichten, die an die Anzeigeobjekte übergeben werden können, mit Beispielen im Skriptindex dokumentiert
Hilfe==>Skriptindex
Wenn Sie die Nachrichten für AxisBox() untersuchen, werden Sie alle verfügbaren Nachrichten sehen.Darunter ist Inc().Diese Änderung des Achseninkrements wird verwendet, um die Werte im Diagramm nach der Änderung der minimalen und maximalen Achsenwerte sicherzustellen.
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 );
);Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitDanke! Es funktionierte.
1)
Könnten Sie mir bitte auch helfen, die X-Achsen-Einstellungen mithilfe eines Skripts anzupassen?
Es gibt keine Werte zwischen LSL und USL.
Vielleicht gibt es eine Strategie, um die x-Achse mit sinnvollen Tick-/Bin-Inkrementen automatisch anzupassen?
2)
Ist es möglich zu geben? colList = { „NPN1“ , „PNP1“ } ; Zu
Autsch = Ein Weg (
Y (
: Name ( „NPN1“ ) ,
: Name ( „PNP1“ )
) , --> statt :Name(), :Name()

Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHier ist ein Skript, das Ihnen zeigen soll, wie Sie die Achsen korrekt angeben.Das neue Wissen, das Sie lernen müssen, ist die Manipulation von Anzeigebäumen.Dies ist im Scripting Guide in der JMP-Dokumentationsbibliothek dokumentiert
Hilfe==>JMP-Dokumentationsbibliothek

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>
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHallo,
So ändern Sie dieses Skript unten, um das Diagramm automatisch auf LSL und USL zu skalieren.
@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 )
)}
)
)
)Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHallo,
Ich möchte dieselbe Lösung für meine Trenddiagramme verwenden, habe jedoch Syntaxprobleme.
Weiß jemand, welche Felder ich ändern muss, wenn meine Grenzwertspaltennamen „CENTERLINE“, „LCL_HS“, „UCL_HS“ lauten?
Und auch, ob ich Anpassungen benötige, wenn ich ein bivariates Diagramm NACH Spalten erstelle?
Danke!
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitDanke, Jim. Es funktioniert perfekt!Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHier ist ein Beispielskript, das den genauen Code für die Verwendung von USL und LSL zum Festlegen der Max- und Min-Achseneinstellungen zeigt.
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"] );Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitHallo Txnelson,
Danke für den Rat. Aber leider ist es nicht die Lösung, die ich suche. Das Achsenfeld fordert den Benutzer auf, die Min./Max.-Werte manuell einzugeben. Ich möchte, dass die JSL die Skalierung automatisch gemäß den in die Parameter eingebetteten LSL- und USL-Spezifikationen ohne menschliches Eingreifen übernimmt.
Gibt es dazu eine Möglichkeit?
Betreff: Automatische Skalierung der Y-Achse des Variabilitätsdiagramms basierend auf dem USL- und LSL-SpezifikationslimitDie einfache Antwort lautet: Ja … siehe
Hilfe==>Skriptindex==>Axis Box
Hier ist ein Beispiel aus dem Scripting Index mit Bivariate, aber die gleiche Funktionalität ist für das Variabilitätsdiagramm verfügbar
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 );