Tracciare i limiti inferiore/superiore e la media in una carta di controlloCiao ragazzi,
Vorrei sapere se è possibile tracciare i valori inferiore, superiore e medio direttamente nel grafico di controllo (creato dal generatore di grafici di controllo) anziché nella tabella Mostra riepiloghi limite.
Grazie.
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloGrazie, Jim. Ora funziona!Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloLa sintassi della funzione "Summarize()" è cambiata nelle recenti versioni di JMP. Sembra che potrebbe essere il problema. Cambia la dichiarazione
Riassumi( dt, byPhase = by( :MyPhase ) );
a
Riepiloga( byPhase = by( :MyPhase ) );
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloGrazie. Ho controllato i dati del campione di sottaceti in inglese ancora senza successo. Passo dopo passo per eseguire lo script e ottenere il seguente report dopo aver eseguito Summarize( dt/*####*/, byPhase = by( :MyPhase ) ). Traduco il log in inglese per te. Credi che ci sia qualcosa di sbagliato lì?
必须是赋值运算符 正在访问或计算“dt”, dt/*####*/
È necessario utilizzare l'operatore di assegnazione per visitare "dt"
在以下脚本中,使用 /*####*/ 标记错误
nello script seguente, utilizzare /*####*/ per contrassegnare l'errore
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloLa sceneggiatura cerca una specifica Outline Box con il titolo, in inglese, di "Individual Measurement of Acid".Il tuo output ovviamente non è in inglese.Lo script seguente modifica il riferimento a Outline Box(2).Questo è un riferimento assoluto alla casella di contorno, mentre "Misurazione individuale dell'acido" è un riferimento relativo.Potresti anche provare a sostituire "Misurazione individuale dell'acido" con

Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
addTxt = Expr(
framebox << Add Graphics Script(
Description( scriptNameTBD ),
Text Color( "Black" );
Text( Center Justified, {xTBD - 2, yTBD + .1}, txtTBD );
);
);
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )[Outline Box(2)][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )[Outline Box(2)][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )[Outline Box(2)][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
// Use a separate graphics script for each annotation so that they are more easily moved 'by hand'
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "LCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), LCL, Expr(txtTBD), LCLtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "Avg Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), Avg, Expr(txtTBD), Avgtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "UCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), UCL, Expr(txtTBD), UCLtxt));
);Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloIl JSL è lo stesso che hai postato prima. Puoi trovare l'immagine della tabella qui. Come puoi vedere, il testo per LCL, UCL e Average non è stato aggiunto.
Grazie.
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloNon ho accesso né a JMP 11 né a un Mac, quindi avrò bisogno del tuo aiuto. Il messaggio punta a una parte di codice che sta tentando di leggere l'LCL dalla tabella di output visualizzata. Potete per favore fornire l'immagine della tabella che è stata generata dalla carta di controllo che contiene i limiti?
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloHo provato JSL sul mio Mac JMP 11. Tuttavia sembra che i testi siano stati ancora aggiunti con successo al grafico. Nella finestra di registro, ottengo le seguenti informazioni sull'errore e ho detto che non è possibile calcolare il pedice. Puoi darmi una spiegazione?
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )[/*###*/"Misurazione individuale di acido"][Number Col Box( i )
] << prendi)[1];
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controllo@ian_jmp
Aggiunta molto bella!
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloMolto bello Gim!
Mi sono preso la libertà di aggiungere al tuo codice in modo che ci sia uno script grafico separato per ogni annotazione:

Ciò rende possibile spostare le annotazioni "a mano" per evitare eventuali collisioni (fare clic con il pulsante destro del mouse sulla casella grafica, selezionare "Personalizza" e modificare i valori x e y negli script a piacere).
Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
addTxt = Expr(
framebox << Add Graphics Script(
Description( scriptNameTBD ),
Text Color( "Black" );
Text( Center Justified, {xTBD - 2, yTBD + .1}, txtTBD );
);
);
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
// Use a separate graphics script for each annotation so that they are more easily moved 'by hand'
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "LCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), LCL, Expr(txtTBD), LCLtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "Avg Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), Avg, Expr(txtTBD), Avgtxt));
Eval(Substitute(NameExpr(addTxt), Expr(scriptNameTBD), "UCL Text "||Char(i), Expr(xTBD), PhaseMaxRowList[i], Expr(yTBD), UCL, Expr(txtTBD), UCLtxt));
);
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloEcco uno script molto approssimativo che estrarrà i valori dalla tabella dei limiti e li posizionerà sul grafico. Ti suggerisco di dedicare del tempo alla lettura della Guida allo scripting usando il codice qui sotto per imparare esattamente come il codice fa quello che fa.
Aiuto==>Libri==>Guida allo scripting

Names Default To Here( 1 );
// Open the sample data table
dt = Open( "$SAMPLE_DATA\Quality Control\Pickles.jmp" );
// There isn't an adequate column to be used as a Phase column in the sample
// data table, so create one
dt << New Column( "MyPhase", character, formula( Char( Floor( Row() / 13 + 1 ) ) ) );
// Run the control Chart
ct = dt << Control Chart(
Phase( :MyPhase ),
Group Size( 1 ),
KSigma( 3 ),
Chart Col( :Acid, Individual Measurement( Phase Level( "1" ), Phase Level( "2" ) ), Moving Range( Phase Level( "1" ), Phase Level( "2" ) ) )
);
// Create a list called byPhase of the each of the Phase values
Summarize( dt, byPhase = by( :MyPhase ) );
// Find the max row for each phase to determine the X position on the chart
// for the placement of the text values
PhaseMaxRowList = {};
For( i = 1, i <= N Items( byPhase ), i++,
Insert Into( PhaseMaxRowList, Max( dt << get rows where( :MyPhase == byPhase[i] ) ) )
);
// Add the text to the chart
framebox = Report( ct )[frame box( 1 )];
framebox << Add Graphics Script(
Text Color( "Black" );
// Loop across the phases and add the 3 text values by pulling their values from the table
// and reformating the values
For( i = 1, i <= N Items( byPhase ), i++,
LCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i )] << get)[1];
LCLtxt = "LCL=" || Format( LCL, "Fixed Dec", 5, 2 );
Avg = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + N Items( byPhase ) )] << get)[1];
Avgtxt = "Avg=" || Format( Avg, "Fixed Dec", 5, 2 );
UCL = (Report( ct )["Individual Measurement of Acid"][Number Col Box( i + (N Items( byPhase ) * 2) )] << get)[1];
UCLtxt = "UCL=" || Format( UCL, "Fixed Dec", 5, 2 );
Text( Center Justified, {PhaseMaxRowList[i] - 2, LCL + .1}, LCLtxt );
Text( Center Justified, {PhaseMaxRowList[i] - 2, Avg + .1}, Avgtxt );
Text( Center Justified, {PhaseMaxRowList[i] - 2, UCL + .1}, UCLtxt );
);
);Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloCiao di nuovo,
Quindi, il vecchio software che ho usato in passato è Minitab.
Rispondendo alla tua domanda, i valori vengono tracciati automaticamente dal software e anche per fase (vedi l'immagine sotto).
Nell'esempio che ho condiviso prima, non ci sono fasi.
So di aver chiesto troppo, ma potresti darmi indicazioni su come includere queste azioni (rimuovere i valori della tabella e del grafico nei grafici) utilizzando lo script?
Grazie ancora.

Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloI valori possono essere aggiunti al grafico. Se non ci sono fasi, i valori vengono visualizzati come parte del grafico

Ma se i dati hanno fasi, i valori, come stai sottolineando, sono in una tabella accanto al grafico e li vuoi sul grafico. Se il tuo vecchio software ti permetteva di aggiungere manualmente i valori, puoi fare lo stesso all'interno di JMP semplicemente annotando il grafico

Se è necessario che questo venga fatto in modo programmatico, è possibile utilizzare uno script per leggere semplicemente i valori dalla tabella visualizzata e posizionarli sul grafico IR.
Ho notato nel tuo esempio dal tuo vecchio software che veniva visualizzato solo un set di limiti, anche se sembrava che ci fossero fasi diverse. Forse perché i limiti erano gli stessi per tutte le fasi?
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloSono io che ho capito male. Questo argomento è venuto fuori prima .
Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controllo
Ciao, grazie per la rapida risposta.
Penso di non essere stato così chiaro nella mia spiegazione. Ho bisogno di tracciare i valori per le linee inferiore, superiore e media.
Vedi sotto l'esempio che sto cercando. A sinistra, il software che ho usato in passato.
Se riesco a tracciare i valori dalla tabella Mostra limiti di riepilogo, posso rimuovere la tabella da segnalare (il miglior layout da inserire in una presentazione).

Ri: Tracciare i limiti inferiore/superiore e la media in un grafico di controlloÈ possibile fare doppio clic sull'asse verticale e aggiungere linee di riferimento oppure aggiungere uno script grafico personalizzato alla casella del grafico facendo clic con il pulsante destro del mouse su di esso. Per la seconda opzione, fai 'Help > Scripting Index' e cerca 'H Line'.