Linea di referenzaCara comunità,
Esiste uno script che posso utilizzare per aggiungere una linea di riferimento diversa a un grafico di distribuzione multipla. Ho 4000 istogrammi e ognuno di essi ha un valore di riferimento diverso.
Il tuo aiuto è davvero apprezzato.
GrazieRe: Linea di riferimentoGrazie per la risposta rapida.
Re: Linea di riferimentoTutti i display della piattaforma hanno una struttura ad albero dietro di loro, che consente a JSL di puntare a qualsiasi oggetto particolare e di passare messaggi all'oggetto.Se vai su uno qualsiasi dei triangoli grigi in una visualizzazione di output, fai clic con il pulsante destro del mouse su di esso e seleziona "Mostra struttura ad albero", vedrai gli oggetti.Puoi fare riferimento ad essi selezionando l'offset per ciascun oggetto.IL
rbiv<SPAN class="token punctuation">[</SPAN><SPAN class="token function">j</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN>
è un offset che punta a un AxisBox() nel display.Questa codifica è molto criptica.Penso che se esamini il seguente codice, vedrai che ciò che sta facendo è passare attraverso ciascuno dei 5 output dell'istogramma e trovare il primo asse box() in ciascuno di questi display e passare il messaggio ad Aggiungi linea di riferimento .È uguale alla notazione criptica, ma in una forma che si ramifica per nome all'oggetto da modificare.
//Open datatable and make report
dt = Open( "$SAMPLE_DATA/Michelson.jmp" );
Biv = dt << Distribution(
Continuous Distribution( Column( :Velocity ) ),
By( :Trial# )
);
rbiv = Biv << Report();
// Here is created a list of all by-groups and a matrix with
//means of each group to be used as a refline.
//A custom list can be used instead using the same approach
Summarize(
groups = by( :Trial# ),
reflines = Mean( :Velocity )
);
n = N Items( groups );
//Add reference lines
For( j = 1, j <= n, j++,
//rbiv[j][1][1][1][1][1][1][1][1] <<
rbiv[j][AxisBox(1)]<<
add ref line( reflines[j], solid, "Red" )
);
Re: Linea di riferimentoCosa fa o cosa significa la seguente riga di codice?Come faccio a sapere quanti [1] sono necessari?Il motivo per cui lo chiedo è che voglio poter aggiungere la linea di riferimento utilizzando le variabili nelle proprietà della funzione della linea di riferimento.
rbiv<SPAN class="token punctuation">[</SPAN><SPAN class="token function">j</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN>
Re: Linea di riferimento<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho un problema simile. Ho un proc gplot che sta tracciando 35 grafici diversi per ID diversi utilizzando un'istruzione by. C'è un modo per specificare una linea di riferimento orizzontale diversa in ogni grafico? Ed è anche possibile visualizzare il valore di quella linea di riferimento sopra o sotto la linea?
Grazie
Linea di referenzaNon sono sicuro di cosa significhi "Verlauf ETA A6" per il tipo di oggetto. Se è il nome dell'oggetto del generatore di grafici dovrebbe funzionare, tuttavia se è il nome della tabella dati non funziona. Penso che sia più semplice assegnare una variabile alla finestra del generatore di grafici (come sopra
Oltre a ciò, dovrebbe funzionare. Ho modificato il mio script per recuperare le linee di riferimento da una tabella separata utilizzando la tua sintassi e ha funzionato.
Penso anche che potresti dover assicurarti che la tabella giusta sia la "tabella dei dati correnti".
Re: Linea di riferimentoMi ha aiutato, ma ricevo ancora un errore
Ho 2 tabelle diverse, una tabella che utilizzo per il grafico, nella seconda ci sono le date (rapporto "Verlauf Eta A6") e le etichette per le linee di riferimento (tabella dati "") - Ho già cambiato il formato in numero di data lunga jmp:
for(i=1,i<=nrows(data Table ("Ereignisse")),i++, report("Verlauf ETA A6")[Axis Box(1)] << add ref line (column(data Table ("Ereignisse"),"Datum"),Solid, "Purple", column(data Table ("Ereignisse"),"Bezeichnung") ));
ma il Log restituisce quanto segue (non molto utile)
In the following script, error marked by /*###*/ For( ::i = 1, ::i <= N Rows( Data Table( "Ereignisse" ) ), ::i++, Report( "Verlauf ETA A6" )[Axis Box( 1 )] << /*###*/ add ref line( Column( Data Table( "Ereignisse" ), "Datum" )[::i], Solid, "Purple", Column( Data Table( "Ereignisse" ), "Bezeichnung" )[::i] ) /*###*/ )
Linea di referenzaLo strano numero è la rappresentazione interna di JMP di un valore datetime (in realtà il numero di secondi trascorsi da una data di riferimento che continuo a dimenticare...).
VLine() sembra non avere un argomento etichetta opzionale. Ma puoi popolare il grafico con linee verticali usando Aggiungi ref line() in un ciclo for. Utilizzare Summarize() per ottenere elenchi e matrici di etichette e date dalla tabella dati. Vedi lo script di esempio di seguito.
// Make example table
dt=New Table( "Test",
Add Rows( 6 ),
New Column( "Group",Nominal, Character, Set Values(
{"Group A", "Group A", "Group A", "Group B", "Group B", "Group B"})),
New Column( "Data", Numeric,
Set Values( [1, 2, 3, 2, 3, 4] )),
New Column( "Date", Numeric,
Format( "d-m-y", 12 ),
Set Values([3166214400, 3166300800, 3166387200, 3166214400, 3166300800, 3166387200])),
New Column( "Label",Nominal,Character,
Set Values( {"A", "B", "C", "A", "B", "C"} )));
// Make list of dates and labels
Summarize(dlist=by(:Date),dlist=mean(:Date));
Summarize(llist=by(:Label));
// Make graph
gb=Graph Builder(
Variables( X( :Date ), Y( :Data ), Overlay( :Group ) ),
Elements( Points( X, Y, Legend( 1 ) ) ));
//Add vertical reflines based on dates in Column date
for(i=1,i<=nrows(dlist),i++,
report(gb)[Axis Box(1)] << add ref line (dlist[i],Solid, "Purple", llist[i] ));
Spero che aiuti.
Re: Linea di riferimentoCiao,
Ho un problema simile, ho un grafico e sull'asse x c'è una data (come dmy) e voglio diverse linee di riferimento verticali sull'asse a. Oggi ho usato uno script con v-line, ma lì ho ottenuto la riga, ma senza etichetta.
Le date per le linee di riferimento e l'etichetta sono memorizzate in una tabella dati (data colonna (formato dmy), etichetta colonna). Ma la refline manuale utilizza al posto della data un numero come: 33962554400 (e so che questa è una data...)
Graph Builder( Size( 696, 688 ), Show Control Panel( 0 ), Variables( X( :BL, Size( 212 ) ), Y( :Name( "x" ) ), Group Y( :Name( "s_-x" ) ), Overlay( :Projektklasse_plus ) ), Elements( Points( X, Y, Legend( 6 ) ) ), SendToReport( Dispatch( {}, "BL-date", ScaleBox, {Format( "d.m.y", 10 ), Interval( "Day" ), Inc( 1 ), Add Ref Line( 3396254400, Solid, {255, 0, 0}, "Label ref line 1" ) , Rotated Labels( 1 )} ), Dispatch(.......
il mio script vline era così:
OPR[FrameBox(1)] << add graphics script (pen color("purple"); vline(column(data Table ("CHCharge$"),"CuI") << get values));
ma in realtà voglio linee di riferimento davvero diverse con un'etichetta, in date diverse e la tabella dati con le date per le linee di riferimento contiene sempre più date durante tutto l'anno...
Quindi puoi chiarire la tua risposta, come utilizzare una tabella dati?
Grazie in anticipo.
Re: Linea di riferimentoCiao MS,
Grazie. Funziona.
Più potere per teRe: Linea di riferimentoEcco uno script di esempio, presupponendo che tutti gli istogrammi si trovino nella stessa finestra. Le singole linee di riferimento sono qui semplicemente la media del gruppo, ma lo script può essere facilmente adattato a una matrice personalizzata o a un elenco di valori, ad esempio recuperati da una tabella
//Open datatable and make report
dt = Open( "$SAMPLE_DATA/Michelson.jmp" );
Biv = dt << Distribution(
Continuous Distribution( Column( :Velocity ) ),
By( :Trial# )
);
rbiv = Biv << Report();
// Here is created a list of all by-groups and a matrix with
//means of each group to be used as a refline.
//A custom list can be used instead using the same approach
Summarize(
groups = by( :Trial# ),
reflines = Mean( :Velocity )
);
n = N Items( groups );
//Add reference lines
For( j = 1, j <= n, j++,
rbiv[j][1][1][1][1][1][1][1][1] <<
add ref line( reflines[j], solid, "Red" )
);