Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?La mia tabella dati ha voci part_ID nella colonna 1. Nella colonna 2 compaiono i 5 parametri di riepilogo: Min, Q1, Mediana Q3, Max e i limiti del test LSL, USL. Nella colonna 1 l'ID della parte viene ripetuto 7 volte (corrispondenti a 5 parametri di riepilogo + LSL e USL, totale 7) dopodiché appare l'ID della parte successiva (e i corrispondenti 7 numeri nella colonna 2).
Non voglio cambiare il formato della tabella dati (cioè non voglio trasporre).
Desidero creare un grafico di tendenza del box plot (con ID parte sull'asse X) utilizzando i 5 parametri di riepilogo e i limiti. Come farlo tramite JSL?
Automazione e scriptingfinestreRi: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?C'è qualche motivo specifico per non modificare il formato dei dati in qualcosa di migliore?
Da

a qualcosa di più facile da gestire

Se non hai alcun indicatore di quale riga sia, sei sicuro che siano sempre nello stesso ordine?
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi Grazie. I miei dati originali sono sotto forma della tabella in basso ma in più con il nome del parametro misurato come colonna aggiuntiva. In questo modulo so come eseguire i box plot utilizzando i 7 parametri.
Utilizzo la funzione Riepilogo () di JMP per ottenere i miei dati sotto forma di tabella principale.
Ho bisogno di questo modulo per tracciare altri grafici nel formato che desidero in cui i dati dei parametri misurati (ad esempio la colonna 3 nella tabella in alto) in una colonna. Esistono più parametri misurati per la stessa parte con intervalli diversi (che appaiono in colonne separate) che traccio sull'asse Y e solo avere i dati per i diversi parametri misurati nelle colonne mi consente di avere la diversa scala dell'asse Y per loro in JMP (con ID parte sull'asse X). Diversi parametri misurati sono correlati e tale grafico aiuta a comprendere le tendenze relative.
La speranza sopra spiega perché i miei dati sono nel formato della tua tabella principale.
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Questo post potrebbe dare qualche idea Creazione di un boxplot da valori già riepilogati .
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi . Grazie. Ho guardato la ricetta nel tuo link. Il metodo descritto sembra funzionare solo quando i dati hanno il formato della seconda tabella, che non è quello che voglio.
Se è possibile indicare a JMP di creare box plot utilizzando Min, Q1, Mediana, Q3, Max forniti in una colonna adiacente (etichetta nel set di dati di esempio allegato) per un dato ID parte (colonna 1 in allegato) invece di calcolarlo da parte di JMP questi valori stessi dalla distribuzione dei valori per ciascuna parte, penso che otterrò ciò che voglio.È possibile farlo tramite JSL?
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Potresti provare a costruire il boxplot usando Rect() e Line() (c'è anche un boxplot che potrebbe funzionare, ma devi simulare i dati o usare le frequenze).
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi Grazie, penso che il box plot seg possa essere usato per fare quello che voglio.
Dall'esempio dell'indice di scripting, non mi è chiaro come si genererebbe il box plot per ogni ID parte (sull'asse x) come nei miei dati di esempio (allegati prima)
Avrei bisogno di scorrere l'ID parte? In tal caso, come decidere la dimensione della cornice, la scala?
Sarebbe utile se potessi ottenere un esempio di base utilizzando i miei dati di esempio.

Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Potrebbe darsi che il box plot seg possa essere utilizzato solo per creare un singolo box plot per un singolo riquadro del fotogramma e sarà al centro
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi Grazie.
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Se sei costretto al formato dati che hai, puoi comunque aggiungere nuove colonne alla tabella. Puoi creare una colonna per ciascuna statistica per seguire l'opzione uno nel collegamento precedente oppure aggiungere due colonne (valore + frequenza) e quindi seguire la seconda opzione. Oppure costruiscilo completamente personalizzato da diverse parti utilizzando lo script grafico
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi . L'intero motivo per avere i dati nel formato della tua tabella superiore (e della mia che è allegata) è solo per poter avere scale diverse in un gruppo in base al grafico Y.
https://community.jmp.com/t5/Discussions/Can-you-change-y-axis-scale-independently-from-other-y-axis/td-p/17649
Non voglio che tu abbia l'opzione Pagina, quindi sono andato e l'ho seguito @txnelson ha suggerito di inserire i dati rilevanti nella forma da lui suggerita, ovvero in colonne separate (supponendo che io abbia compreso correttamente il suo suggerimento).
Se esiste un altro modo senza utilizzare Page o @txnelson suggerimento (un altro simile Qui ), Sono tutt'orecchi
.
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi Grazie per i tuoi suggerimenti su questo argomento su cui torno poiché devo mantenere il formato dei dati come nei dati di esempio allegati in questo thread in precedenza. Posso ottenere quasi ciò di cui ho bisogno con lo script seguente (potrebbero esserci modi migliori per farlo, ma di seguito c'è il mio racconto). Ho bisogno di aiuto per due cose.
- Devo tracciare una linea nera verticale che colleghi Min e Max per ciascun partID (attualmente non selezionato nel filtro dati locale, grafico a sinistra sotto). Quando Min/Max è selezionato nel filtro dati locale (grafico sotto a destra), vengono collegati da una linea nera verticale (al posto dei punti neri ora sul grafico a destra), arriverò quasi all'anatomia di un diagramma a scatola, che Penso che sia sufficiente e adatto allo scopo. Come ottenere questa linea verticale tramite JSL per ogni ID parte (V Line ()?)?
- In secondo luogo, i miei parametri misurati (corrente, resistenza nei dati di esempio) nei dati effettivi saranno >40. Quindi, non voglio impostare il colore della legenda come ho fatto nel mio script. Come impostare il colore della legenda come nero per impostazione predefinita (altrimenti JMP colora ciascun gruppo Y in modo diverso e non come ho impostato i colori dei marcatori).
Names Default To Here (1);
clear log ();
dt = Current Data Table ();<BR />
//Set LSL/USL marker and color
dt << Row Selection(
Select where( Contains( :Label, "LSL" ) | Contains( :Label, "USL" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Red" );
dt << Clear Select;<BR />
// Set Q1/Q3 marker and color
dt << Row Selection(
Select where( Contains( :Label, "Q1" ) | Contains( :Label, "Q3" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Black" );
dt << Clear Select;<BR />
//Set Median arker and color
dt << Row Selection(
Select where( Contains( :Label, "Median" ) ),Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 0) << Colors( "Blue" );
dt << Clear Select;<BR />
// Plot chart
gb = Graph Builder(
Size( 404, 412),<BR /> Show Control Panel( 0 ),
Variables( X( :partID ), Y( :Resistance ), Y( :Current ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 37 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 35 ), Jitter( "None" ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == {"LSL", "Median", "Q1", "Q3", "USL"} )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
37,
Properties( 0, {Line Color( 0 )}, Item ID( "Resistance", 1 ) )
), Legend Model(
35,
Properties( 0, {Line Color( 0 )}, Item ID( "Current", 1 ) )
)}
)
)
);

Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Questo script aggiuntivo aggiunto sopra fornisce ciò che si desidera utilizzando V Line ().
Esempio solo per PartID =1 (grafico sotto). Come renderlo automatico in un loop?
gbr = gb << report;
// For FrameBox (1)
Q1_Part1_Para1 = 2.75;
Q3_Part1_Para1 = 3.1;
// For FrameBox (2)
Q1_Part2_Para1 = 250;
Q3_Part2_Para1 = 302;
PartNo = 1;
Eval(EvalExpr(gbr [Framebox (1)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part1_Para1, Q3_Part1_Para1);
)));
Eval(EvalExpr(gbr [Framebox (2)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part2_Para1, Q3_Part2_Para1);
)));
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?È possibile utilizzare Summarize() per ottenere valori partID univoci. Quindi è possibile utilizzare l'abbonamento datatable con la combinazione di Loc() per ottenere righe per partID specifico durante il loop. Quindi calcola/ottieni i tuoi valori e aggiungi le tue linee
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi
>> È possibile utilizzare Summarize() per ottenere valori partID univoci.
OK
>>Quindi è possibile utilizzare l'abbonamento datatable con la combinazione di Loc() per ottenere righe per partID specifico durante il loop.
Mai usato Loc (). Questo mi dà la coordinata X per ogni partID. Un esempio con i miei dati di esempio sarebbe molto utile.
>> Quindi calcola/ottieni i tuoi valori e aggiungi le tue linee.
Vuoi dire calcolare le coordinate X per ciascuna parte poiché gli altri numeri Min, Max, Q1, Q3 e Mediana sono già calcolati.
Inoltre, devo scorrere ciascun FrameBox o esiste un'alternativa più semplice?
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?I tuoi ID parte sono nello stesso ordine nel grafico come sono nella tabella (e Riepiloga), quindi hai già la coordinata x. Se hai già calcolato tutti i valori che ti servono, puoi semplicemente recuperarli dalla tabella dati. Di seguito è riportato un esempio di utilizzo di Summarize, Loc e datatable subscripting
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq_vals = by(:age)); // Summarize returns characters
For Each({uniq_val}, uniq_vals,
val_rows = Loc(dt[0, "age"], Num(uniq_val));
show(val_rows);
f_rows = val_rows[Loc(dt[val_rows, "sex"], "F")];
show(f_rows);
f_heights = dt[f_rows, "height"];
show(f_heights);
);
Hai solo due frame box ma più righe che desideri aggiungere al loro interno, quindi non dovrebbe essere necessario eseguire il loop sui FrameBox (loop over the partIds)
Modificare:
Inoltre invece di Loc potresti usare << Ottieni righe dove poiché di solito è più facile da usare
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi . OK. Grazie. Ci proverò (tornerò se rimango bloccato).
Nel mio set di dati effettivo, il numero di parametri misurati è >50 (potrebbe essere di più), quindi se dovessi tracciare tutti i 50 grafici delle tendenze dei parametri uno sopra l'altro, ci saranno 50 FrameBox, da qui la mia domanda sul looping sui FrameBox.
Inoltre, per il mio PartID = 1, annuncio di utilizzare X= 0, per la coordinata X in V Line () nel mio script sopra. È così che dovrebbe essere (cioè la coordinata x per la linea V inizia da 0 e non da 1, anche se mostra 1)?
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Se ci sono così tanti parametri, avere un loop aggiuntivo è una buona idea.
E per la cosa X = 0, suggerirei di provarlo. Guarda cosa succede (in questo modo di solito impari di più). Puoi anche vedere dalle impostazioni dell'asse X che il valore è 0 e l'etichetta 1

Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?@jthi OK. Grazie. Un'altra cosa mi preoccupa. Ho disattivato il jitter nel mio script, ma i marcatori superiore (Q3) e inferiore (Q1) appaiono ancora con un offset. Puoi eseguire il mio script con la tabella dati allegata prima per testarlo (sono su JMP 16.2).
C'è un'altra impostazione Jitter che devo disattivare.
Il jitter/offset è più evidente se uso quanto segue per impostare i marcatori per Q1 e Q3 (sto solo cercando di ottenere la forma del riquadro prima di disegnare la linea verticale), ma anche con il marcatore orizzontale vedo un po' di offset. Mi sto perdendo qualcosa?
// Q1/Q3 marker and color
dt << Row Selection(Select where(Contains( :Label, "Q3" ) ),Match case( 1 ),Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Π" ) << Colors( "Black" );
dt << Clear Select;
dt << Row Selection(Select where( Contains( :Label, "Q1" ) ), Match case( 1 ), Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Џ" ) << Colors( "Black" );
dt << Clear Select;
Correzione: l'offset sembra essere dovuto al rendering del grafico da parte di JMP. Allungare il grafico orizzontalmente significa correggere l'offset.
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?controllando in questo modo
frame = (gbr)[FrameBox( 1 )];
seg = (frame << FindSeg( Marker Seg( 1 ) ));
{method, axis, limit, spacing, seed} = seg << Get Jitter();Ottengo un valore "seme" anche dopo aver impostato Jitter su nessuno
{"None", "XY", 1, 0, 184430754}I miei punti sono tremolanti (sembrano così)?
Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Il jitter è impostato su Nessuno

il che immagino significhi che non dovrebbe essere aggiunto rumore casuale

Ri: Come creare box plot quando 5 parametri di riepilogo (Min, Q1, Mediana Q3, Max) e Limiti (LSL, USL) sono in una colonna corrispondente a un determinato part_ID?Questo script aggiuntivo chiamato dallo script precedente (in questo thread) fa quello che volevo. Lo script è specifico per i miei dati ma mostra un modo per tracciare V Line () all'interno di un ciclo su diversi Framebox.
Passando a BoxPlots nel Graphbuilder con Q1, Q2 e Mediana selezionati nel filtro dati locale si ottengono boxplot corretti. La linea V () collega Max e Min completando l'anatomia di un box plot.Poiché vengono selezionati solo Q1 e Q2 e il resto dei dati viene ignorato, penso che si ottenga la casella corretta (selezionando più parametri come Min e Max nel filtro dati locale si ottiene una casella errata).
Names Default To Here (1);
Clear Log ();
setVLines_atMinMax = Function ( {gbr, FrameboxNo, PartNo, Min, Max}, {},
Eval(EvalExpr(gbr [Framebox (FrameboxNo)]<< Add graphics Script (
V Line (Expr(PartNo-1), Expr(Min), Expr(Max));
)));
);
gbr = gb << report;
nParts =5;
nc = ncols (dt); //number of coulms in my data table
For (j =1, j <=(nc-1), j++,
FrameboxNo = j;
for ( i = 1, i <= nParts, i++,
ind = (7*i-3); //show (ind);
ind_next = (7*i -3) + 1; //show (ind_next);
PartNo = Num(:PartID[ind]); //show (PartNo);
Min = Column(nc) [ind]; show (Min);
Max = Column(nc) [ind_next]; show (Max);
setVLines_atMinMax (gbr, FrameboxNo, PartNo, Min, Max);
);
nc = nc-1;
);
//show (FrameboxNo); show (nc);
