Aggiungi variabile nel generatore di graficiHo una tabella dati con più colonne e righe
Voglio scorrere ogni colonna e aggiungerla al generatore di grafici sull'asse x
Questo è il mio semplice script
dt = Open( filepath );
all_cols = dt << Get Column Names( "String" );
cols_to_plot={};
For Each ({col}, all_cols,
If(col == "A" || col == "B",,
Insert into (cols_to_plot, col);
)
);
graph = dt << Graph Builder();
For Each ({col},cols_to_plot,
graph << Add Variable ("X", Column(dt, col)); // Also tried graph << Add Variable (X, Column(dt, col));
);
Questo script mi dà sempre l'errore seguente
il valore dell'argomento non è valido nell'accesso o nella valutazione di 'Aggiungi variabile', argomento errato ( "X" ), aggiungi variabile ( "X", colonna ( dt, col ) ) /*###*/alla riga 600
Solo per controllare se eseguo lo script qui sotto funziona bene, ma voglio tracciarlo per circa 1000 colonne
graph = dt << Graph Builder(
Variables(X(cols_to_plot[1]),X(cols_to_plot[2]),X(cols_to_plot[3]));
);
cosa mi sto perdendo qui, apprezzo il tuo aiuto
Modifica (jthi): aggiunta formattazione jsl
Automazione e scriptingRe: Aggiungi variabile nel generatore di graficiNon sono sicuro di che tipo di trama stai cercando, ma un esempio potrebbe essere qualcosa del genere
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
cols_to_plot = {"age", "sex"};
graph = dt << Graph Builder();
For Each ({col},cols_to_plot,
Eval(EvalExpr(
graph << Add Variable({Expr(NameExpr(AsColumn(dt, col))), Role("X")});
));
);
Controllare la sintassi corretta dall'indice di scripting per << Aggiungi variabile e utilizzare la valutazione dell'espressione per ottenere il riferimento alla colonna nel formato corretto

(A seconda del grafico finale, potresti voler seguire un'altra strada, ovvero creare l'intera espressione del generatore di grafici)
Re: Aggiungi variabile nel generatore di graficiHo provato questo metodo e ho anche provato
For Each ({col}, cols_to_plot,
col_ref = Column(dt, col);
graph << Add variable (col_ref, Role("X"));
);
In entrambi i casi il mio jsl si blocca, ho solo 1000 colonne e 500 righe nella mia tabella dati
è il modo efficiente di farlo, o c'è un modo migliore per tracciare tutte le colonne della tabella sull'asse X contemporaneamente, se provo lo stesso sulla GUI è molto più veloce
Re: Aggiungi variabile nel generatore di graficiChe tipo di trama stai cercando di creare?
Re: Aggiungi variabile nel generatore di graficiSto cercando di creare un semplice grafico a dispersione, con tutte le colonne sull'asse X in serie
Qualcosa come sotto

Re: Aggiungi variabile nel generatore di graficiDato che hai così tante colonne, molto probabilmente creerei l'espressione Graph Builder invece di aggiungere le colonne una alla volta. Crea il grafico manualmente, copia lo script per vedere come è stato costruito e poi replicalo usando JSL. Di seguito è riportato un esempio.
JMP ha creato lo script
Graph Builder(
Size(528, 458),
Show Control Panel(0),
Variables(
X(:"0.642539"n, Combine("Parallel Merged")),
X(:"0.645736349"n, Position(1), Combine("Parallel Merged")),
X(:"0.648933698"n, Position(1), Combine("Parallel Merged")),
X(:"0.652131047"n, Position(1), Combine("Parallel Merged")),
X(:"0.655328396"n, Position(1), Combine("Parallel Merged")),
X(:"0.658525745"n, Position(1), Combine("Parallel Merged")),
X(:"0.661723094"n, Position(1), Combine("Parallel Merged")),
X(:"0.664920443"n, Position(1), Combine("Parallel Merged")),
X(:"0.668117792"n, Position(1), Combine("Parallel Merged")),
X(:"0.671315141"n, Position(1), Combine("Parallel Merged")),
X(:"0.67451249"n, Position(1), Combine("Parallel Merged")),
X(:"0.677709839"n, Position(1), Combine("Parallel Merged")),
X(:"0.680907188"n, Position(1), Combine("Parallel Merged")),
X(:"0.684104537"n, Position(1), Combine("Parallel Merged")),
X(:"0.687301886"n, Position(1), Combine("Parallel Merged")),
X(:"0.690499235"n, Position(1), Combine("Parallel Merged"))
),
Elements(Points(X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8), X(9), X(10), X(11), X(12), X(13), X(14), X(15), X(16), Legend(4)))
);
Per creare questo con JSL potresti fare qualcosa del genere
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Functional Data/NMR DoE.jmp");
nrmcols = dt << get column group("NMR Spectra");
colnames = Transform Each({col}, nrmcols,
AsColumn(dt, col) << get name;
);
colnames = colnames[1::20];
var_expr = Expr(Variables());
points_expr = Expr(Points());
For Each({colname, idx}, colnames,
x_expr = EvalExpr(X(Expr(NameExpr(AsColumn(dt, colname))), Position(1), Combine("Parallel Merged")));
point_expr = EvalExpr(X(Expr(idx)));
Insert Into(var_expr, Name Expr(x_expr));
Insert Into(points_expr, Name Expr(point_expr));
);
gb = Eval(Substitute(
Expr(dt << Graph Builder(
Size(528, 458),
Show Control Panel(0),
_var_,
Elements(_points_)
)),
Expr(_var_), Name Expr(var_expr),
Expr(_points_), Name Expr(points_expr)
));
Write();
Re: Aggiungi variabile nel generatore di graficiFunziona perfettamente, grazie per l'aiuto
Re: Aggiungi variabile nel generatore di graficiCiao,
Ho un problema con questi grafici che ho tracciato, non riesco a salvarli in nessun formato che ho provato, .jmpreport .jrp ecc., poiché non voglio salvare il grafico in formato statico png, jpg, voglio salvare un grafico interattivo con dati incorporati.
nw = New Window("printing window",
gb = Eval(Substitute(
Expr(dt << Graph Builder(
Show Window(1),
Size(528, 458),
Show Control Panel(0),
_var_,
Elements(_points_)
)),
Expr(_var_), Name Expr(var_expr),
Expr(_points_), Name Expr(points_expr)
));
); <BR /><BR />reportpath = ::my_dir_path||"/metadata/"||metaTestfile;
newWindow<< Save(reportpath); Also tried
gb = Eval(Substitute(
Expr(dt << Graph Builder(
Show Window(1),
Size(528, 458),
Show Control Panel(0),
_var_,
Elements(_points_)
)),
Expr(_var_), Name Expr(var_expr),
Expr(_points_), Name Expr(points_expr)
));
gb << Show Window;
newWindow = Window (gb);
reportpath = ::my_dir_path||"/metadata/"||metaTestfile;
newWindow<< Save(reportpath );
The script doesn't throw any error in any case but also not saving the graph
Re: Aggiungi variabile nel generatore di graficiL'indice di scripting di solito contiene le risposte per lo scripting (<< Salva rapporto finestra)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Functional Data/NMR DoE.jmp");
nrmcols = dt << get column group("NMR Spectra");
colnames = Transform Each({col}, nrmcols,
AsColumn(dt, col) << get name;
);
colnames = colnames[1::20];
var_expr = Expr(Variables());
points_expr = Expr(Points());
For Each({colname, idx}, colnames,
x_expr = EvalExpr(X(Expr(NameExpr(AsColumn(dt, colname))), Position(1), Combine("Parallel Merged")));
point_expr = EvalExpr(X(Expr(idx)));
Insert Into(var_expr, Name Expr(x_expr));
Insert Into(points_expr, Name Expr(point_expr));
);
gb = Eval(Substitute(
Expr(dt << Graph Builder(
Size(528, 458),
Show Control Panel(0),
_var_,
Elements(_points_)
)),
Expr(_var_), Name Expr(var_expr),
Expr(_points_), Name Expr(points_expr)
));
gb << Save Window Report("$DOWNLOADS/test.jrp", embed data(1));
// demo purposes
Close(dt, no save);
wait(1);
Open("$DOWNLOADS/test.jrp");
Write();