[Script JLS] : Loop per tracciare diversi grafici insiemeCiao,
Sono nuovo in JMP. È un software potente!
Questo è il motivo per cui vorrei scrivere uno script in grado di tracciare diverse Y da colonne diverse (ogni n colonna in realtà) in funzione di una X.
L'ho scritto grazie all'interfaccia del generatore di grafici, ma vorrei scriverlo in un ciclo.
Ho fatto qualcosa del genere per tracciare la distribuzione (ma sfortunatamente non è la stessa scala ...)
//Distributions Std Dev
New Window( "Side by Side",
H List Box(
Distribution(
Continuous Distribution( Column( :median_range_mm ))
);
for ( p = 2, p <= 64, p++,
nom = "median_range_mm " || char(p);
col = Column(nom);
Distribution(
Continuous Distribution( Column( col ), Std Error Bars( 1 ) );
/*SendToReport(
Dispatch(
{"Distributions", Column( col )},
"1",
ScaleBox,
{Min( 1450 ), Max( 1820 ), Inc( 20 ), Minor Ticks( 0 ),
Label Row Nesting( 1 )}
)
)*/
)
)
)
Questo è quello che ho provato per il mio problema principale, il risultato è solo una finestra di apertura del generatore di grafici.
Vorrei tracciare la colonna [ref, ref 1 , ref 2 fino a ref 64] sull'asse Y e currentTimeMillis sull'asse X
New Window( "Ref",
H List Box(
Graph Builder(
For (r = 2 , r <= 64, r++,
name = "ref " || char(r);
col = Column(name);
Variables( X( :currentTimeMillis ), Y (Column (col), Position( 1 ) ) ),
Elements(
Points( X, Y(r) , Legend( 29 ) ),
Smoother( X , Y(r), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
)
);Grazie per l'aiuto.
Saluti
Re: [Script JLS] : Loop per tracciare diversi grafici insiemeSi possono facilmente creare oggetti di output, che possono essere creati in anticipo e quindi visualizzati su richiesta dell'utente.Oppure, a causa della velocità di JMP, molte delle mie applicazioni generano output specifici al momento della richiesta di un utente.Dovresti anche esplorare il Column Switcher che consentirà all'utente di selezionare da un elenco quali colonne analizzare e visualizzare.
Re: [Script JLS] : Loop per tracciare diversi grafici insiemeè possibile salvare un grafico individuale (come un elenco di facile accesso) per un uso successivo invece di tracciarli tutti in un'unica casella di riepilogo H?Grazie.
Re: [Script JLS] : Loop per tracciare diversi grafici insiemeSono un po 'confuso ..... ma offro questo codice come possibile esempio di soluzione.Sembra dall'ultimo pezzo di codice che hai fornito, che stai cambiando i nomi delle colonne nella tua tabella di dati, in "Ref".Poiché JMP non ti consente di avere 2 colonne con lo stesso nome, la seconda colonna che tenti di rinominare "Ref", in realtà viene denominata "Ref 2".E questo continua fino alla colonna "Rif 64".Ti suggerisco anche di ricontrollare il tuo codice per la denominazione della colonna "currentTimeMillis".Nel tuo codice, in realtà rinomini quella colonna (con lo stesso nome), 64 volte.
Di seguito è riportato il mio nuovo codice ...... utilizza una tabella di dati di esempio ....... le colonne chiamate Ref - Ref 64, sono tutte in un ordine contiguo, ma poiché a JMP non interessa davvero, il codice lo farà funziona anche per la tua tabella di dati, in cui le colonne sono distribuite tra le tue oltre 700 colonne
Names Default To Here( 1 );
// Build some sample data
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Column( dt, 6 ) << set name( "ref" );
For( i = 7, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
// Build the JSL code for the Graph Builder
theExpr = "dt << Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( :ref )";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( :ref " || Char( i ) || ", Position( 1 ) )"
);
theExpr = theExpr || "),
Elements(
Points(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || "
,Legend( 5 )
),
Smoother(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || " ,
Legend( 6 )
)
)
)";
// Execute the generated code
Eval( Parse( theExpr ) );
Re: [Script JLS] : Loop per tracciare diversi grafici insiemeGrazie per la tua risposta Gim!
Ma potrei aver travisato il mio problema.
In effetti, mi piacerebbe avere tutta la mia trama sullo stesso grafico .
Anche la mia colonna Y è già stata impostata ogni 11 colonne e currentTimeMillis appare solo una volta all'inizio:
//Set columns
For( i = 1, i <=709 , i++,
For ( j = 0, j <= 63, j++,
If ( i == 2, Column(i) << set name( "currentTimeMillis" ),i == 15 + 11*j, Column(i) << set name( "ref" ),
)
)
)Infine, "__col__" non è stato definito ("col" è stato definito ma in un'altra funzione per la distribuzione), quindi non capisco perché l'hai usato qui.
Grazie ancora.
Re: [Script JLS] : Loop per tracciare diversi grafici insiemeEcco un esempio di come lo farei
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
For( i = 6, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
New Window( "Ref",
hlb = H List Box(
)
);
For( r = 2, r <= 64, r++,
name = "ref " || Char( r );
Eval(
Substitute(
Expr(
outputhlb = H List Box(
Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( Column( __col__ ), Position( 1 ) )
),
Elements(
Points( X, Y( r ), Legend( 29 ) ),
Smoother( X, Y( r ), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
),
Expr( __col__ ), Parse( ":" || name )
)
);
hlb << append( outputhlb );
);