JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus den X-Koordinaten einer CSV-Datei und zur Anzeige in einem Diagramm oder in einem TextfeldHallo, ich habe ein Skript, das das angehängte Diagramm einiger Datenpunkte erstellt und es mit einem zusätzlichen Liniendiagramm überlagert. Ich muss jetzt in der Lage sein, das Delta zwischen den Hoch- und Tiefpunkten in mehreren verschiedenen x-Koordinaten zu berechnen. Ich kann das erste tun, da es alle x-Koordinatenwerte enthält, aber ich weiß nicht, wie ich es nur für die x-Koordinatenwerte zwischen den orangefarbenen berechneten Linien und nur für die anfängliche Kurve machen soll sowohl die linke als auch die rechte Seite innerhalb der orangefarbenen Linienberechnungen. Dann wollte ich diese Werte nach Möglichkeit im Diagramm anzeigen oder in einem Textfeld, das angezeigt wird, wenn das Diagramm erstellt wird. Ich habe einige Bilder eingefügt, die dabei helfen, die vier verschiedenen Bereiche zu erläutern, aus denen ich das Delta berechnen muss, sowie mein aktuelles Skript. Die orangefarbene Linie kann sich je nach Daten ändern, da sie auf einem Wert basiert, den der Benutzer beim Ausführen des Skripts eingibt. Jede Hilfe wird sehr geschätzt. Danke!



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>Qualitäts- und VerfahrenstechnikBetreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldPerfekt danke @txnelson . Diese beiden Änderungen haben es geschafft. Es funktioniert jetzt perfekt. Nochmals vielen Dank für all die Hilfe!
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldWenn JMP eine Variable erstellt, z. B. Ihr xMat usw., bleibt die Variable standardmäßig bestehen, bis sie geändert wird.Und wenn bei der ersten Ausführung Ihres Codes die erforderliche Variable nicht erstellt wurde und Sie sie in Ihrem Code anfordern, verfügt sie nicht über einen Wert, den das Programm bereitstellen kann, und einige Berechnungen können dies nicht tun ausgeführt werden.Wenn die Variable jedoch später im Skript festgelegt wird, bleibt sie gesetzt, bis sie gelöscht oder geändert wird.Wenn Sie also das Skript ein zweites Mal ausführen und der Code an den Punkt gelangt, an dem er beim ersten Durchlauf des Skripts die erforderliche Variable nicht finden konnte, wird er sie dieses Mal finden, da sie zu einem späteren Zeitpunkt festgelegt wurde Zeit im Code während der letzten Ausführung des Skripts.
Ich habe einen möglichen Ort gefunden, an dem das passiert sein könnte.Sie haben die Variable dt festgelegt, nachdem Aktivitäten an der Datentabelle durchgeführt wurden.Ich habe die Codezeile im Skript weiter nach oben verschoben, damit der Code möglicherweise beim ersten Durchlauf funktioniert.Ich habe auch „Clear Symbols()“ als erste Zeile des Skripts platziert.Dadurch werden alle Variablen im Code gelöscht, wenn das Skript beginnt.Dadurch wird sichergestellt, dass die referenzierten Variablenwerte in diesem Codedurchlauf erstellt wurden, da alle Werte aus dem letzten Durchlauf gelöscht wurden.Probieren Sie den Code aus und prüfen Sie, ob er funktioniert.
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>Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldNach weiteren Tests mit meinem Skript scheint es also perfekt zu funktionieren (beim zweiten Mal, wenn ich es auf den Daten ausführe), aber nicht beim ersten Mal. Nach dem ersten Durchlauf werden die Deltas nicht berechnet und angezeigt, aber wenn ich das Skript zum zweiten Mal ausführe, funktioniert es ... Ich bin verwirrt. Ich habe den bereinigten Code sowie ein Bild des ersten Durchlaufs ohne Ergebnisse und ein Bild des zweiten Durchlaufs mit erfolgreichen Ergebnissen angehängt. Was übersehe ich, was dazu führt, dass mein Skript beim ersten Mal nicht richtig funktioniert?
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>

Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldDanke @txnelson .Ich konnte das herausfinden und es funktioniert perfekt. Ich habe festgestellt, dass ich { } um die xy-Koordinaten setzen muss, damit der Text im Diagramm angezeigt wird. Ich schätze Ihr Wissen und Ihre Unterstützung bei meinem Drehbuch sehr!
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldDiese zusätzliche Erklärung macht Sinn. Ich werde an Ihren Vorschlägen arbeiten. Danke schön.
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem Textfeld
// 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 reportBetreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldKeine Sorge, das habe ich mich gefragt.
Wie wäre es mit dem Text, der im Diagramm angezeigt wird? Ich sehe das nicht. Ich kann ein Popup-Fenster erstellen, das sich vor dem Diagramm mit den Werten öffnet, aber Ihre Idee, diese Werte im Diagramm anzuzeigen, damit sie zusammen mit dem Diagramm angezeigt werden können, hat mir sehr gut gefallen. Gibt es da etwas, das mir fehlt?
Ich habe nur das Ende des Skripts als Referenz eingefügt.
Nochmals vielen Dank für all die Hilfe!
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
)
)
)
)
);Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldJa...anscheinend ist es mein Tippfehler...Tut mir leidBetreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldDie Stellen im Code, an denen „Normalisieren“ steht, sollten also „Normalisieren“ lauten?

Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldDie normalisierte Spalte wird aus der von Ihnen bereitgestellten Datentabelle erstellt.Welche Daten haben Sie zum Erstellen der von Ihnen angezeigten Diagramme verwendet? Die Spalte „Normalisiert“ wird als einer der Achsenwerte in diesen Diagrammen verwendet
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldVielen Dank für die Hilfe, ich habe jedoch immer noch einige Probleme. Wenn ich das Skript ausführe, erhalte ich die folgende Fehlermeldung.
Name ungelöst: Normalize{16} beim Zugriff oder bei der Auswertung von „Normalize“, :Normalize/*###*/
Auch wenn ich diesen Abschnitt auskommentiere, liegt das Problem vor. Um die Anzeigekommentare zu testen, werden sie nicht im Diagramm angezeigt.
Könnten Sie mir bitte helfen, das Problem damit zu verstehen?
Danke.
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldSuper, danke. Das sieht toll aus. Ich werde es versuchen und sehen, wie es funktioniert. Ich schätze die Hilfe dabei sehr.
Betreff: JMP-Skriptformel zur Berechnung des Deltas mehrerer verschiedener Bereiche aus X-Koordinaten einer CSV-Datei und Anzeige im Diagramm oder in einem TextfeldIch habe Ihrem Diagramm Code hinzugefügt (ungetesteter Code), der die Gesamt- und Innerhalb-Deltas berechnet.Für die Berechnung des linken und rechten Deltas sind die Regeln zur Definition der Boxen erforderlich.
Ich habe auch eine sehr einfache Anzeige für die 2 Werte hinzugefügt.
In beiden Fällen zeige ich Ihnen den Ansatz, der für die nächsten Verbesserungen Ihres Codes erforderlich ist.Ich kann keinen perfekten Code garantieren, aber Sie sollten das Konzept sehen und es von dort aus übernehmen können
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>