Crea un ciclo per visualizzare le linee di riferimento in un graficoCiao a tutti,
Sto usando JMP15 da 1 anno ma sto appena iniziando a interessarmi agli script.
Vorrei scrivere uno script per visualizzare le linee di riferimento in un grafico, basato su una tabella.
Ho 2 tabelle: dati (su cui eseguo lo script, per tracciare value=f(time)) e date, contenenti una colonna con date corrispondenti alle linee di riferimento che vorrei avere nel grafico.
Quelle tabelle sono allegate al mio post.
Ecco il mio script attuale, che mostra una riga di riferimento basata sul primo elemento delle date della tabella, la data della colonna.
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} ) )
);Vorrei creare un ciclo "For" per creare automaticamente righe di riferimento per ogni valore della tabella "date".
Ecco cosa ho provato:
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ),
{
For( i = 1, i <= N row( dates), i++,
f = dates [ i ];
Add Ref Line( f, "Dotted", "Blue", "", 2 )
);
})
);Ma quando eseguo lo script, non viene visualizzata alcuna riga di riferimento.
Come posso risolvere questo problema?
Ultima domanda: se non aggiungo "Page(:cat)" nelle variabili del grafico, non viene visualizzata alcuna linea di riferimento...
Grazie per l'aiuto !!
GraficaSceneggiaturaRe: creare un ciclo per visualizzare le linee di riferimento in un graficoBenvenuto nella comunità di discussione!
Ecco un modo per aggiungere le linee di riferimento

La documentazione su come utilizzare le strutture di visualizzazione per manipolare l'output di JMP si trova nell'indice degli script.
Names Default To Here( 1 );
dt = Data Table( "data" );
dates = Data Table( "dates" );
ref1 = dates:name( "date" )[1];
gb = Graph Builder(
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} )
)
);
// Add reference lines
For( i = 1, i <= N Rows( dates ), i++,
// Add for Cat = B
(Report( gb )[axisbox( 1 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
// Add for Cat = C
(Report( gb )[axisbox( 3 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
);
Re: creare un ciclo per visualizzare le linee di riferimento in un graficoGrazie Jim per la tua rapida risposta, davvero utile!
Re: creare un ciclo per visualizzare le linee di riferimento in un graficoEcco una soluzione che non utilizza alberi di visualizzazione.
Names Default To Here( 1 );
dt = Data Table( "data" );
dts = Data Table( "dates" );
// Get the unique values of cat
summarize(cat_unique = by(dt:cat));
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
);
// Add reference lines
for (c = 1, c <= nitems(cat_unique), c++,
scbox = c + 1;
for (i = 1, i <= nrows(dts), i++,
ref = dts:date[i];
gb << SendToReport(
Dispatch( {}, "time", ScaleBox( scbox ), {Add Ref Line( ref, "Dotted", "Red", "", 2 )} )
);
);
);