Ho uno script in cui utilizzo Page By per creare una serie di grafici. Voglio aggiungere linee di riferimento diverse a ciascun grafico, estratte da un elenco.
Attualmente l'unico modo in cui so come specificare a quali grafici aggiungere le linee di riferimento è fare riferimento al grafico tramite il suo indice intero (che sembra iniziare da 2) utilizzando ScaleBox. (Per favore fatemi sapere se c'è un modo migliore rispetto all'utilizzo dell'indice intero.) Ad esempio:
For( i= 1, i<= n, i+=1,
RefLineValue= RefLineList[i];
mygraph << SendToReport(
Dispatch(
{},
"Data",
ScaleBox( i+1 ),
{Add Ref Line( RefLineValue, "Solid", "Black", "", 1 )}
);
)
);Questo quasi funziona, ma il mio problema è che non so come ottenere l'indice intero specificato correttamente per la funzione ScaleBox. La funzione Pagina per sembra inserire i grafici una sorta di ordine alfabetico, quindi ho pensato che se avessi usato Sort List (RefLineList) allora l'ordinamento dell'elenco corrisponderebbe all'ordine dei grafici.
Ma l'ordinamento non corrisponde esattamente: ad esempio, se le variabili nel ruolo Pagina per sono [A50, B50, B100], i grafici verranno ordinati [A50, B50, B100 ] ma l'elenco creato utilizzando Elenco di ordinamento verrà ordinato [A50, B100 , B50].
C'è un modo per specificare il grafico Pagina per nome invece che per indice intero? E se no, c'è un modo per ordinare la mia lista in modo che l'ordine della lista corrisponda all'ordine del grafico?
Graph Builder utilizza un ordinamento ibrido.Ecco un piccolo script che lo farà per i valori della tua lista
refList = {"B100", "A50", "B50"};
For( i = 1, i <= N Items( refList ), i++,
If( Length( refList[i] ) < 4,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( "00", Length( refList[i] ) - 1 ) ||
Substr( refList[i], 2 )
);
);
refList = Sort List( refList );
For( i = 1, i <= N Items( refList ), i++,
While( Length( Word( 1, refList[i], "0" ) ) == 1,
refList[i] = Substr( refList[i], 1, 1 ) ||
Substr( refList[i], 3 )
)
);
Suggerisco anche di dare un'occhiata all'utilizzo di un metodo più semplice per impostare le linee di riferimento.Se vai direttamente all'AxisBox a cui vuoi aggiungere la linea di riferimento, è fatto con un codice più semplice.Di seguito è un esempio.Inoltre, la Guida allo scripting ha una sezione completa sull'utilizzo degli alberi di visualizzazione e l'indice di scripting contiene definizioni ed esempi per tutte le funzioni.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
refList = {60,65};
gb = dt << Graph Builder(
Size( 528, 956 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :sex ) ),
Elements( Points( X, Y, Legend( 8 ) ), Smoother( X, Y, Legend( 9 ) ) )
);
Summarize( dt, groups = by( :Sex ) );
For( i = 1, i <= N Items( groups ), i++,
Report( gb )[axisbox( i * 2 )] << Add Ref Line(
refList[i],
"Solid",
"Black",
"",
1
)
);