È possibile utilizzare JSL per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriCIAO,
Traccio regolarmente i grafici di distribuzione.Alcuni giorni ricevo solo poche colonne di dati, altri giorni un po' di più.
Una volta generati i singoli grafici, dovrò regolare il rispettivo asse Y minimo/massimo per migliorarne la leggibilità, quindi aggiungere un paio di linee di riferimento (sostanzialmente linee USL e LSL).Dopo un po' diventa noioso, soprattutto perché ci sono molte colonne di dati.
Vorrei vedere se esiste un modo per automatizzare questo processo poiché il processo stesso è relativamente semplice e ripetitivo. Sto pensando che lo scripting JSL possa essere la soluzione qui (sono molto nuovo nello scripting).
Questo è ciò che vorrei che lo script facesse:
1. Ogni colonna di dati è composta da 5 punti dati, con la prima e la seconda riga contenenti rispettivamente USL e LSL
2. Lo script dovrebbe leggere tutte le colonne di dati
3. Tracciare grafici di distribuzione individuali per tutti i dati
4. Aggiungi le linee di riferimento USL e LSL (possiamo impostare qui lo spessore e il colore della linea?)
5. Quindi modificare il Min dell'asse Y in LSL-0.003 e il Max dell'asse Y in USL in USL+0.003
JSL può fare quanto sopra?
Grazie!
Automazione e scriptingRe: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriRisposta breve: JSL può farlo.
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altri- Benvenuti nella Comunità
- Sì, uno script JMP può eseguire facilmente le attività che hai delineato.
- JMP visualizzerà automaticamente i valori USL e LSL su ciascuno dei grafici.Tuttavia, la struttura dei dati che hai descritto non è una struttura normale per JMP.È abbastanza semplice aggiungere a uno script il JSL per prendere i dati USL e LSL e spostarli nella proprietà della colonna Limiti specifiche per ciascuna colonna e quindi eliminare le prime 2 righe dei dati.
- La descrizione dei tuoi dati sembra indicare che hai solo 3 punti dati per ogni colonna di dati.(5 punti dati meno le righe LSL e USL) e da lì si tracciano i grafici di distribuzione.Utilizzando la terminologia JMP, un grafico di distribuzione è una visualizzazione di un istogramma.È questo quello che stai specificando come grafico di cui hai bisogno?In tal caso, come si crea questo grafico da 3 punti dati.
- Modificare i valori minimo e massimo dell'asse è molto semplice e può essere aggiunto allo script.
- La mia interpretazione di ciò che hai descritto nella tua voce iniziale potrebbe essere totalmente sbagliata.Sarebbe carino se potessi fornire un campione dei dati che stai utilizzando e un'illustrazione del grafico che devi visualizzare.
- Ti suggerisco di dedicare del tempo alla lettura del documento Discovering JMP disponibile nel menu a discesa Guida in JMP.
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriGrazie per la tua risposta.
Per il punto 4 mi scuso di non essermi spiegato bene. Per essere chiari, ci saranno 7 righe di dati in ciascuna colonna. La prima riga è la LSL e la seconda riga è la USL. Le righe da 3 a 7 sono i dati effettivi.
Per il punto 6, ecco i miei dati di esempio e i grafici risultanti:


Per il grafico in questo esempio, vengono tracciate anche la prima e la seconda riga di dati, cosa che non voglio. Sono rispettivamente LSL e USL. Quello che faccio normalmente è non includere LSL e USL nei dati.
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriEcco uno script di esempio che produce ciò che desideri

Names Default To Here( 1 );
// Create the data table
// dt = open( "<PATH to="" the="" file="" that="" has="" the="" data="https://community.jmp.com/">" );
// Here is the sample data table you provided
dt = New Table( "Example",
Add Rows( 7 ),
New Column( "Data1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 10.5, 10, 10.2, 9.7, 9.6, 10.4] )
),
New Column( "Data2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [4.5, 5.5, 5, 5.1, 5.2, 4.9, 4.7] )
)
);
// Ge all of the numeric column's names
colNameList = dt << get column names( string, continuous );
//Take the data from rows 1 & 2 and create the Spec Limints column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform, having the Spec Limits as
// Column Properties, will insure the proper Min and Max for
// the Y axis
dt << Distribution( column( eval(colNameList) ));</PATH>Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriOh wow.. Sicuramente non mi aspettavo che tu scrivessi la sceneggiatura: grazie!
Ho visto che la parte anteriore dello script riguarda la creazione della tabella di dati di esempio che ho fornito in precedenza. Come posso modificarlo in modo da poter chiedere allo script di puntare a una tabella dati esistente di mia scelta (suppongo che sia il file .jmp) e quindi eseguirlo?
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriApertura della tabella: Guida allo scripting > Tabelle dati > Introduzione alle tabelle dati (utilizzo Aprire() )
Ottenere il percorso dalla selezione dell'utente Scegli file()
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriIl mio pensiero è che devo incorporare un altro set di codice a cui hai contribuito a rispondere dall'altro mio thread:
If( Is Missing( fn ),
throw(),
// Else Open the selected file
Open( fn )
);
Suppongo che dopo aver aperto il file, devo caricarlo come tabella dati? Il che significa usare la sintassi dt?
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriSi utilizza Open() per aprire il datatable, open quindi restituisce un riferimento al datatable (se riesce ad aprire il file) che è stato aperto e che viene quindi memorizzato nella variabile dt
dt = Open("myfile.jmp");Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriHo modificato lo script condiviso in precedenza da uno dei contributori (grazie) in modo che l'utente possa scegliere quale file di dati (.jmp) aprire:
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));Durante l'esecuzione dello script, ho riscontrato il seguente errore:
Invia prevede un oggetto scriptabile nell'accesso o nella valutazione di 'Invia', dt << /*###*/ottiene i nomi delle colonne (string, continue) /*###*/
Sembra che ci sia un problema con il dt << ottieni i nomi delle colonne?
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriHai dt come percorso del file, quindi è una stringa. È necessario che faccia riferimento al file appena aperto, come di seguito. Notare l'istruzione Open()
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriSpostato in una nuova discussione con un titolo più pertinente.
Re: JSL può essere utilizzato per automatizzare il tracciamento di grafici e l'aggiunta di linee di riferimento, tra gli altriQuesto codice è un po' più pulito:
// Get the filename of the .jmp file to open
filename = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( filename ),
Throw(),
// Else Open the selected file
dt = Open( filename )
);