Script JSL: generatore di grafici per tracciare tutte le colonne di una tabella di datiCiao a tutti,
Utente JMP di lunga data (novizio nello scripting jsl), poster per la prima volta. Apprezzerei qualsiasi aiuto!
Sto scrivendo uno script che fa due cose:
1. apri un file di testo, importa i dati numerici, quindi salva la tabella dei dati, così posso aprirla in seguito.
2. utilizzare il generatore di grafici per tracciare tutte le colonne dell'"asse y" contemporaneamente
Non ho problemi con l'articolo n. 1, quindi non sono necessari commenti al riguardo. L'articolo n. 2 mi sta dando problemi. Non ho trovato un modo per tracciare tutte le colonne dell'asse y contemporaneamente, su un grafico.
La tabella dati ha una colonna di dati sull'asse x (dati da utilizzare sull'asse x del grafico risultante), ma può avere 1 o più colonne di dati che devono trovarsi sullo stesso asse y del grafico. Sto cercando di confrontare visivamente questi dati e utilizzare un grafico con tutti tracciati è molto utile. Probabilmente potrei semplicemente impilare i dati in un set di dati x e uno y con una terza colonna utilizzata per la sovrapposizione, ma non voglio farlo.
Qualche idea?
Ri: Script JSL: generatore di grafici per tracciare tutte le colonne di una tabella di datiGrazie Jim,
Ha funzionato perfettamente. E apprezzo il tuo gentile invito a leggere il manuale: lo farò ancora, e spero di conservarne un'altra piccola percentuale. Però non sempre imparo dal manuale, ed è per questo che sono venuto qui. Onestamente, mi ci sarebbero volute circa 5 ore per capire cosa hai fatto, quindi apprezzo il tuo approccio da esperto perché mi ha fatto risparmiare tempo prezioso e mi ha mostrato qualcosa di nuovo che posso usare in futuro. Saluti
Ri: Script JSL: generatore di grafici per tracciare tutte le colonne di una tabella di dati- È necessario leggere la Guida allo scripting
- Ti avevo fornito uno script che ti mostrava come doveva apparire JSL per creare il tuo grafico, o almeno la mia interpretazione del grafico che volevi.
- Il mio suggerimento per eseguirlo in modo interattivo è di darti un modo per produrre il grafico nel modo in cui vuoi che appaia, e poi tutto ciò che devi fare è fare in modo che JMP generi lo script per il grafico, che poi ti mostra ciò di cui ha bisogno da creare per produrre il grafico.
- Ho allegato uno script che accetta la tabella dei dati Semiconductor Capability e quindi, utilizzando tutte le colonne continue, produce il grafico sovrapposto.La prima colonna continua viene utilizzata come colonna X e le rimanenti vengono utilizzate come colonne Y multiple.
- Tutte le funzioni utilizzate nello script sono documentate nell'indice degli script.Tuttavia, l'apprendimento dei vari strumenti e strutture è ciò che ti consentirà di creare i tuoi script creati in modo indipendente.
- Il gruppo di discussione della community è qui per aiutarti quando hai difficoltà a comprendere alcuni componenti di JSL
- Esempi di creazione di analisi, grafici, ecc. da una tabella di dati dinamici di input sono disponibili nelle discussioni sul sito della community.È necessario consultare le discussioni già pubblicate per trovare soluzioni
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Ri: Script JSL: generatore di grafici per tracciare tutte le colonne di una tabella di datiCiao Jim,
Grazie per la risposta tempestiva! Il tuo post descrive esattamente cosa voglio che faccia lo script, no, non lo sto facendo in modo interattivo. Il grafico deve essere creato utilizzando uno script, in modo che quando eseguo lo script:
1. apre un file di testo e carica tutti i dati in un datatable, salva la tabella dei dati (ho già completato questa parte dello script senza problemi).
2. crea un singolo grafico di tutte le colonne di dati y rispetto a una colonna di dati x (questo è ciò per cui ho bisogno di aiuto)
Il file di dati può avere un numero qualsiasi di colonne di dati y (con nomi diversi), ma esiste sempre solo una colonna di dati x. Lo script di caricamento che ho già scritto, carica tutti i dati e nomina le colonne.Non so in anticipo quante colonne di dati y ho finché il file non viene caricato in una tabella di dati.
Ciò a cui stavo pensando inizialmente era di inviare un elenco di colonne alla variabile "Y" nel generatore di grafici, ma non sono sicuro che sia possibile. Aperto anche ad altri suggerimenti, ma vorrei preservare la struttura della tabella dati di una colonna x-data, con molte colonne y-data (cioè non voglio impilare i dati).
-Dave
Ri: Script JSL: generatore di grafici per tracciare tutte le colonne di una tabella di datiSe esegui in modo interattivo il generatore di grafici, tutto ciò che devi fare per avere più colonne tracciate come asse Y è prendere tutte le colonne che desideri rappresentare graficamente e trascinarle nella zona di rilascio Y.

Il JSL per farlo è di seguito
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);