Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Quando utilizzo la piattaforma di distribuzione, per impostazione predefinita la larghezza del contenitore è sempre grande e non aiuta a comprendere bene la distribuzione. I dati che devo elaborare variano in ordini di maginute (mega, mili, unità, ecc.) Pertanto un contenitore fisso con tutti gli istogrammi non funziona. Anche nel caso reale che devo elaborare ho centinaia di test quindi non è nemmeno possibile regolare i grafici uno per uno. Esiste un modo per far sì che la larghezza del contenitore per ogni singolo diagramma venga determinata dall'intervallo di dati? Ad esempio, vorrei semplicemente prendere l'intervallo e dividerlo in 100 parti uguali o 50, ecc., quindi indipendentemente dall'unità l'aspetto sarebbe in qualche modo uniforme in tutti i grafici senza doverli regolare individualmente. In allegato sono riportati 3 esempi di grafici in cui vorrei che l'impostazione predefinita fosse quella di vedere la larghezza del contenitore impostata su forse 1/100 dell'intervallo di dati.
Grazie!
Esplorazione e visualizzazione dei datiRi: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Sono stato in grado di impostare il contenitore utilizzando una parte del codice fornito sopra e utilizzando le espressioni Eval/Parse.
Grazie.
dt = currentdatatable();
col = dt << get column names();
nc = N Items( col );
colList = {};
bin_width={};
For( i = 1, i <= nc, i++,
If(Contains (col[i],"::"),
Insert Into( colList, col[i] ))
);
For(i = 1, i <= N Items(colList), i++,
Insert Into(bin_width,0.0);
bin_width[i] = Col Max(Column(dt, colList[i])) - Col Min(Column(dt, colList[i]));
bin_width[i] = bin_width[i]/10;
);
theExpr = "dis = dt << Distribution(Stack( 1 ),
Continuous Distribution( column( column(dt,colList[1])), Set Bin Width(bin_width[1]), Label Row( Label Orientation( \!"Perpendicular\!" ) ))
";
For( i = 2, i < N Items( colList ), i++,
theExpr = theExpr || ", Continuous Distribution( column( column(dt, colList[" || Char( i ) || "])), Set Bin Width(bin_width[i]))"
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Grazie @ron_horne E @jthi per i frammenti di codice. Li proverò.
Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Molto probabilmente un miglioramento al mio codice precedente con Set Bin width() di @ron_horne .
Molto probabilmente il looping può essere realizzato in modo più intelligente:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Students.jmp");
colList = {"height", "weight"};
dist = dt << Distribution(
Continuous Distribution(Column(:height)),
Continuous Distribution(Column(:weight))
);
wait(1);
For(i = 1, i <= N Items(colList), i++,
newInc = Col Max(Column(dt, colList[i])) - Col Min(Column(dt, colList[i]));
newInc = newInc/10;
dist[i] << Set Bin Width(newInc);
);Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?CIAO @breino
che ne dici di questo come base per lo sviluppo:
Open( "$SAMPLE_DATA/Big Class.jmp" );
Distribution(
Continuous Distribution( Column( :height ), Set Bin Width( (colmax(:height)-colmin(:height))/50 ) ),
Continuous Distribution( Column( :weight ), Set Bin Width( (colmax(:weight)-colmin(:weight))/100 ) )
);
Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Potresti provare a scriverlo.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Students.jmp");
colList = {"height", "weight"};
dist = dt << Distribution(
Continuous Distribution(Column(:height)),
Continuous Distribution(Column(:weight))
);
wait(2);
rep_layer = Report(dist);
axisbox = rep_layer[axis box(1)];
For Each({val}, colList,
//some calculation for inc
newInc = Col Max(Column(dt, val)) - Col Min(Column(dt, val));
newInc = newInc/10;
cur_rep = rep_layer[OutlineBox(val)];
axisbox = cur_rep[axis box(1)];
axisbox << Inc(newInc);
);C'è anche Bin Span() ma non sono sicuro che possa essere modificato dopo che la distribuzione è stata creata.
Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?Ciao Ron:
Grazie per il suggerimento Sfortunatamente non gli piace un numero elevato di test, ho provato ad aggiungere ~ 30 test da tracciare e viene visualizzato l'errore "Impossibile aggiungere elemento: l'elenco contiene già il numero massimo di elementi".
Speravo ci fosse un'impostazione generale per regolare la larghezza del contenitore poiché la maggior parte delle distribuzioni esce con barre larghe, quindi deve esserci un'impostazione globale da qualche parte su come determinare quanto sono larghe.
Ri: Come posso regolare automaticamente la larghezza del contenitore nelle distribuzioni in base all'intervallo di dati stesso?CIAO @breino ,
Comincia qui:
https://community.jmp.com/t5/JMP-Add-Ins/2D-Histograms/ta-p/377945
facci sapere se aiuta.