Ho uno script in cui utilizzo Page By per creare una serie di grafici. Voglio aggiungere diverse linee di riferimento 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 )}
);
)
);Funziona quasi, ma il mio problema è che non so come ottenere l'indice intero specificato correttamente per la funzione ScaleBox. La funzione Page By sembra inserire i grafici in una sorta di ordine alfabetico, quindi ho pensato che se utilizzo Sort List( RefLineList ), l'ordine dell'elenco corrisponderebbe all'ordine dei grafici.
Ma l'ordinamento non corrisponde del tutto: 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 Ordina elenco verrà ordinato [A50, B100 , B50].
C'è un modo per specificare il grafico Page By per nome invece che per indice intero? E se no, c'è un modo per ordinare il mio elenco in modo che l'ordine dell'elenco 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 )
)
);
Ti suggerisco anche di dare un'occhiata all'utilizzo di un metodo più semplice per impostare le tue linee di riferimento.Se vai direttamente all'AxisBox a cui vuoi aggiungere la linea di riferimento, è fatto con un codice più semplice.Di seguito è riportato un esempio.Inoltre, la Guida agli script contiene una sezione completa sull'utilizzo degli alberi di visualizzazione e l'Indice degli script 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
)
);