Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtHallo
Ich habe ein Skript, das der Spalteneigenschaft Spezifikationsgrenzen (USL/LSL) zuweist und dann ein Diagramm der Spalte erstellt, und das erwarte ich
um die auf dem Plot eingezeichneten Grenzlinien zu sehen. Was passiert, ist, dass die Grenzwerte in der Tabelle korrekt eingestellt sind, aber im Diagramm nicht sichtbar sind.
Wenn ich den gleichen Plot manuell in diese Spalte zeichne, nachdem ich das Skript ausgeführt habe, gibt es wieder keine Linien.
Wenn ich das Eigenschaftenfenster der Spaltenspezifikation öffne, sehe ich die Grenzwerte und die Option „Referenzlinie anzeigen“ ist aktiviert.
Nur wenn ich auf „Übernehmen“ klicke und dann erneut zeichne, kann ich die Linien auf dem Plot wie erwartet sehen. Aber ich bekomme es nicht per Skript zum Laufen.
irgendeine Idee?
(mit JMP PRO 15)


Erweiterte statistische ModellierungAutomatisierung und SkripterstellungDatenzugriffMassenanpassungQualitäts- und VerfahrenstechnikWindowsBetreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtJim, danke, das hat geholfen.
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtDiese JSL sollte den Zweck erfüllen
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtJim, Danke für die Antwort.Ich bin gelaufen und die Grenzwerte werden zur Tabelle hinzugefügt.Der Teil, mit dem ich ein Problem habe, ist das Hinzufügen von Einheiten zu den Spalteneigenschaften.Wenn ich die Kommentare aus meinem Code entferne, wird die Spalteneigenschaft „Einheiten“ zwar gefüllt, jedoch nicht mit dem gewünschten Wert von Zoll oder Pfund.Stattdessen werden beide mit dem Wert List gefüllt.Mir ist nicht klar, was mir in der Ausdrucksanweisung oder Auswertungsanweisung fehlt, um den Text aus der Datentabellenzelle zu übertragen.Jede Hilfe wäre
hochgeschätzt.
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtHier ist ein einfaches Beispiel, das mit Ihrem Code funktioniert.Wenn es bei Ihren Datentabellen immer noch nicht funktioniert, suchen Sie nach Inkonsistenzen bei den Spaltennamen
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtIch verwende eine sehr ähnliche Methode, um Grenzwerte aus einer Grenzwerttabelle zu übernehmen und den Spalteneigenschaften Spezifikationsgrenzwerte hinzuzufügen.Ich wollte versuchen, eine ähnliche Methode zu verwenden, um Einheiten basierend auf dem Wert in der Grenzwerttabelle zu aktualisieren.Derzeit in der Codeshow auskommentiert, aber wenn ich es ausführe, erhalte ich den Wert „List“ als Einheiteneigenschaft anstelle der gewünschten Einheit.Ich denke, das ist ein Syntaxproblem, aber bisher habe ich noch keine korrekte Syntax für die eval expr-Anweisung gefunden.
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtIch bin mir nicht sicher, warum es sich ohne die geschweiften Klammern so verhält, da ihre Verwendung die richtige Syntax zu sein scheint JMP-Hilfe – Spalteneigenschaften
col << Set Property( "propertyName", {argument list} );
JMP muss einige Informationen intern speichern, denn wenn Sie den Befehl OHNE geschweifte Klammern ausführen und die Spalteneigenschaften überprüfen, sieht es ganz gut aus, aber wenn Sie „Spalteneigenschaften kopieren“ verwenden, erhalten Sie nur das erste Argument (da Sie keine Liste haben). Argumente):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
Nachdem Sie dann in der Spalteneigenschaft „Spezifikationsgrenzen“ auf „Übernehmen“ geklickt haben, werden die Argumente auf die richtige Liste aktualisiert:
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtDanke ! Tatsächlich hat das Hinzufügen der geschweiften Klammern das Problem gelöst 
Können Sie erklären, warum das so ist?
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtEs scheint, dass Sie die Grenzwerte anwenden, nachdem das Diagramm zum ersten Mal angezeigt wird.Die Grenzen werden gezeichnet, wenn das Diagramm zum ersten Mal angezeigt wird. Wenn nach diesem Zeitpunkt Grenzen hinzugefügt werden, muss das Diagramm neu gezeichnet werden, damit sie angezeigt werden.
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtDie Syntax scheint etwas abweichend zu sein. Sie müssen nach den Spezifikationsgrenzen {} hinzufügen. Siehe Skript unten: Das Gewicht funktioniert nicht, ohne auf „Anwenden“ zu drücken, die Größe jedoch schon.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtDanke für die schnelle Antwort ! Ich bin davon ausgegangen, dass der Code nicht wirklich relevant ist, da die Spezifikationsgrenzen in den Spalteneigenschaften korrekt festgelegt werden.
Es legt LSL und USL fest und zeigt Grenzwerte (1) an, aber das Diagramm zeigt sie nicht an, obwohl sie richtig eingestellt sind.
Selbst wenn ich einen einfachen Code mit festen Nummern verwende, verhält es sich gleich.
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

Erst nachdem Sie auf „Anwenden“ geklickt und das Diagramm erneut gezeichnet haben, werden die Linien angezeigt.
Betreff: Festlegen des Spezifikationslimits für die Spalteneigenschaft durch JSL – Linien werden im Diagramm nicht angezeigtHallo @shlomi_bakish ,
Können Sie ein Beispiel für Ihren JSL-Code bereitstellen? Dies kann bei der Diagnose Ihres Problems hilfreich sein. In der Zwischenzeit ist dieser Teil des Codes ein Beispiel dafür, wie Sie die Spezifikationsgrenzen für die Spalten festlegen und sicherstellen können, dass sie für die grafische Darstellung aktiviert sind.
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);Dies sollte Ihnen dabei helfen, in die richtige Richtung zu gelangen. Aber ohne Ihren Code zu sehen und zu verstehen, was Sie tun, ist es schwierig, genauer auf Ihre Bedürfnisse einzugehen.
Hoffe das hilft!,
DS