Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoCiao, ho uno script che crea il grafico allegato di alcuni punti dati e lo sovrappone a un grafico a linee aggiuntivo. Ora devo essere in grado di calcolare il delta tra i punti alto e basso in più coordinate x diverse. Sono in grado di eseguire il primo poiché include tutti i valori delle coordinate x, ma sono perplesso su come farlo solo per i valori delle coordinate x tra le linee calcolate arancioni, nonché solo per la curva iniziale su sia il lato sinistro che quello destro all'interno dei calcoli della linea arancione. Quindi volevo visualizzare questi valori sul grafico, se possibile, o in una casella di testo che viene visualizzata quando viene creato il grafico. Ho incluso alcune immagini che aiutano a spiegare i 4 diversi intervalli da cui devo calcolare il delta, oltre a includere il mio script attuale. La linea arancione può cambiare a seconda dei dati, poiché si basa su un valore immesso dall'utente quando si esegue lo script. Qualsiasi assistenza è molto apprezzata. Grazie!



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>Ingegneria della qualità e dei processiRi: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoPerfetto grazie @txnelson . Queste 2 modifiche hanno funzionato. Funziona perfettamente ora. Grazie ancora per tutto l'aiuto in questo senso!
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoper impostazione predefinita, quando JMP crea una variabile, come xMat ecc., la variabile rimarrà finché non verrà modificata.E, se alla prima esecuzione del tuo codice, la variabile richiesta non è stata creata, quando la richiederai nel tuo codice, non avrà un valore da fornire al programma, e quindi alcuni calcoli non saranno in grado di farlo essere eseguito.Tuttavia, se successivamente nello script la variabile viene impostata, rimarrà impostata finché non verrà eliminata o modificata.Pertanto, quando si esegue lo script per la seconda volta e il codice arriva al punto in cui nella prima esecuzione dello script non è riuscito a trovare la variabile richiesta, questa volta la troverà, perché è stata impostata in un secondo momento tempo nel codice durante l'ultima esecuzione dello script.
Ho trovato un possibile luogo in cui ciò sarebbe potuto accadere.Stavi impostando la variabile dt dopo che le attività sulla tabella dati erano state eseguite.Ho spostato la riga di codice più in alto nello script, in modo che il codice possa funzionare alla prima esecuzione.Ho anche inserito un "Clear Symbols()" come prima riga dello script.Ciò cancellerà tutte le variabili nel codice all'inizio dello script.Ciò garantirà che i valori delle variabili a cui si fa riferimento dovranno essere stati creati in questa esecuzione del codice, poiché tutti i valori dell'ultima esecuzione sono stati cancellati.Prova il codice e vedi se funziona.
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>Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoQuindi, dopo ulteriori test con il mio script, sembra che funzioni perfettamente (la seconda volta che lo eseguo sui dati), ma non la prima volta. Dopo la prima esecuzione non calcola e non visualizza i delta, ma la seconda volta che eseguo lo script funziona... sono confuso. Ho allegato il codice ripulito, nonché un'immagine dei risultati senza risultati alla prima esecuzione... e un'immagine dei risultati positivi alla seconda esecuzione. Cosa mi manca che non fa funzionare correttamente il mio script la prima volta?
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>

Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoGrazie @txnelson .Sono riuscito a capirlo e funziona perfettamente. Ho scoperto che dovevo inserire { } attorno alle coordinate xy affinché il testo venisse visualizzato nel grafico. Apprezzo davvero tutta la tua conoscenza e assistenza con la mia sceneggiatura!
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoQuesta spiegazione aggiuntiva ha senso. Lavorerò sui tuoi suggerimenti. Grazie.
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testo
// 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 reportRi: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoNon preoccuparti, è quello che mi chiedevo.
Che ne dici del testo visualizzato nel grafico? Non lo vedo. Sono in grado di creare una finestra pop-up che si apre prima del grafico con i valori, ma mi è piaciuta molto la tua idea di visualizzare tali valori sul grafico in modo che possano essere visualizzati con il grafico. C'è qualcosa che mi manca lì?
Ho incluso solo la fine della sceneggiatura come riferimento.
Grazie ancora per tutto l'aiuto in merito!
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
)
)
)
)
);Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoSì... a quanto pare è un mio errore di battitura... scusaRi: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoQuindi le istanze nel codice in cui si dice: Normalizza, in realtà dovrebbe essere: Normalizzato?

Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoLa colonna normalizzata viene creata dalla tabella dati fornita.Quali dati hai utilizzato per creare i grafici che mostri... la colonna "Normalizzato" viene utilizzata come uno dei valori dell'asse in quei grafici
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoGrazie per l'aiuto, però ho ancora alcuni problemi. Quando eseguo lo script ricevo il seguente errore.
Nome non risolto: Normalizza{16} nell'accesso o nella valutazione di 'Normalize', :Normalize/*###*/
Inoltre, se commento questa sezione che presenta il problema, per testare i commenti visualizzati non vengono visualizzati nel grafico.
Potresti aiutarmi a capire il problema con questi?
Grazie.
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoFantastico, grazie. Sembra fantastico. Ci proverò e vedrò come funziona. Apprezzo davvero l'aiuto con questo.
Ri: Formula di script JMP per calcolare il delta di più intervalli diversi dalle coordinate X di un file .csv e visualizzarlo su un grafico o in una casella di testoHo aggiunto del codice al tuo grafico (codice non testato), che calcolerà i delta complessivi e interni.I calcoli del delta sinistro e destro richiedono le regole per la definizione delle caselle.
Ho anche aggiunto una visualizzazione molto semplice per i 2 valori.
In entrambi i casi, ti sto fornendo l'approccio che deve essere adottato per darti questi prossimi miglioramenti al tuo codice.Non posso garantire un codice perfetto, ma dovresti vedere il concetto ed essere in grado di prenderlo da lì
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>