Aiuta con Sovrapposizione tracciare Ottieni nomi colonnaCiao a tutti, spero che qualcuno possa aiutarmi.
Ho bisogno di creare un grafico in cui il numero di colonne numeriche cambia di volta in volta, ma alla fine ho bisogno di tracciare tutte le mie colonne numeriche nel grafico Overlay come mostrato nello script sottostante.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Overlay Plot( X( :name ), Y( :height, :weight ), Connect Thru Missing( 1 ) );
Questo è quello che ho provato ma i grafici sono creati separati, mi chiedo a caldo di accettare le istruzioni per l'asse Y. Grazie in anticipo.
dt = Data Table ("Big Class");
list = dt << get column names(numeric, continuous);
show (list);
For( i = 1, i <= N Items(list), i++,
Overlay Plot(
Y( Column( list[i] ) ),
X( :name ), Connect Thru Missing( 1 ) ) );Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaQuesto è anche un approccio diverso,
grazie per il sostegno @ian_jmp e @Signorina
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaCi sono 2 buone soluzioni per la tua domanda. Sto aggiungendo questo come una FYI, per una terza alternativa.
Mi piace lavorare con i nomi delle colonne come testo. Quando hai un elenco di nomi di colonne (stringa) alcune piattaforme (non tutte) richiedono l'Eval List (), quindi ti suggerisco di utilizzarlo pro forma (uno standard).
dt = Open("$SAMPLE_DATA/Big Class.jmp");
mylist = dt << get column names(numeric, continuous, string);
op = Overlay Plot(Y(EvalList(mylist)), X(:name), Connect Thru Missing(1));
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaGrazie @ gzmorgan0 per la tua risposta, lo apprezzo.
Ho una domanda aggiuntiva, se il caso è che ho diverse colonne numeriche, continue nella mia tabella ma voglio solo creare il mio sovrapposizione con alcune colonne.
Qual è l'approccio migliore per selezionare l'elenco di colonne da un ciclo?
Diciamo che voglio che il ciclo selezioni solo dalla colonna 3 (colonna 3 numerica, continua a <= N elementi), o loop dalla colonna 1 (colonna 1 numerica, continua a meno di 2 elementi N totali).
Grazie in anticipo.
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaNon capisco esattamente la tua domanda, quindi ti fornirò un paio di suggerimenti. Dovresti leggere le liste e lavorare con gli elenchi. Per esempio,
mylist = words("abcdefghijklmnopqrstuvwxyz","");
show(mylist); // see the log list of characters a-z
show( mylist[ 3::nitems(mylist)-2 ] ); //see log c-x
Presumo che se vuoi iniziare dopo la colonna 3, sai quali potrebbero essere le prime 3 colonne. Quindi un approccio sarebbe quello di ottenere i nomi di tutte le colonne continue e rimuovere i nomi delle prime 3 colonne.
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaCiao @ gzmorgan0 scusa per non essere stato così chiaro con la mia domanda.
Vorrei provare a spiegare più a fondo, alcune volte le mie tabelle contengono 5 o fino a 7 colonne, quindi dalle colonne numeriche / continue, voglio escludere la prima colonna, o un altro script sarebbe da escludere solo le ultime 2 colonne. quando ho detto di escludere, mi riferisco al fatto che i nomi delle colonne possono escluderli.
C'è un modo per farlo attraverso il ciclo?
Un'altra opzione è che le mie colonne non volute (se è il caso) sono sempre nella prima colonna o nelle ultime 2 colonne relative al tipo di colonna (numerico, charcater, ecc.), C'è anche un modo per capirlo, ottenere i nomi delle colonne usando ciclo continuo?
Grazie!!!
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaScusate, questo non è ancora "cristallo". Quando fai riferimento alla prima colonna, è quella la colonna fitrst nella tabella o la prima colonna continua? Stessa domanda per le ultime 2 colonne. Inoltre, conosci i nomi delle colonne che vuoi escludere? Dovrebbe essere sensibile al maiuscolo / minuscolo?
Ho la sensazione che tu stia chiedendo come saltare certe colonne. Non sapendo esattamente cosa stai cercando, ecco un esempio che potrebbe aiutarti. nolist è una lista di nomi noti da saltare.
Names Default to Here(1);
dt = Open("$sample_data/Semiconductor Capability.jmp");
cnames = dt << get column names("numeric", "String");
nolist = {"wafer", "site", "datetime"};
nw = New Window("Overlay Plots", lub = LineUpBox(ncol(3)));
For(i=1,i<=nitems(cnames), i++,
if (contains(nolist, lowercase(cnames[i]) ), continue() ); //next i
if( Col Number(column(cnames[i]) ) == 0 | Col Std Dev(column(cnames[i])) == 0, continue() ); //next i, no need to plot a constant.
//otherwise
vl = VlistBox(op = Overlay Plot(Y( Column(cnames[i])), X(:lot_id) ) );
Report(op)[OutlineBox(1)] << set title("Overlay Plot: " || cnames[i] || " vs. lot_id");
lub << append(vl);
);
Se non conosci i nomi da saltare, sai solo che sono in determinate posizioni nella tabella, crea un nolist
//or create nolist
nolist = {};
Insert Into(nolist, Column(dt,1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)-1) << get name);
Insert Into(nolist, Column(dt, ncol(dt)) << get name);
show(nolist);
Puoi anche rimuovere questi nomi da cnames. [Non sono sicuro esattamente da dove provengano queste posizioni.] Se volessi rimuovere solo le 1 e le ultime 2 colonne continue, devi semplicemente ottenere tutte le colonne continue come mostrato nella sceneggiatura, quindi
cnames = cnames[ 2::nitems(cnames)-2 ];
ora i nomi non hanno più quei valori.
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaGrazie @ gzmorgan0 witht nolist = {}; e cnames = cnames [2 :: nitems (cnames) -2]; Ho le opzioni che stavo cercando.
Scusa per non essere così chiaro.
Volevo solo capire come ottenere i nomi delle colonne (indipendentemente dal tipo di colonna) per colonne specifiche in base alla loro posizione.
Il tuo answwr mi ha già aiutato a risolvere la mia preoccupazione.
Grazie ancora.
Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaL'argomento di Y (...) sembra non valutato in fase di esecuzione dal Sovrapposizione trama piattaforma.
Ecco un modo per forzare la sostituzione della variabile di lista con un elenco esplicito di colonne prima di creare la trama:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
list = dt << get column names(numeric, continuous);
op = Expr(
Overlay Plot(Y((Expr(list))), X(:name), Connect Thru Missing(1))
);
Eval(Eval Expr(op));Ri: Guida con Sovrapposizione traccia di ottenere nomi di colonnaCordiali saluti, questo funziona anche:
myOP = dt << Overlay Plot(Y(dt << get column names(numeric, continuous)), X(:name), Connect Thru Missing(1));