Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Ciao,
Vorrei eseguire una query sul database al passaggio del mouse.
Nel mio caso ho molti milioni di immagini ma mi interessa vederne pochissime, una alla volta.
Ho simulato un caso utilizzando i dati dei set di dati di Big Class e Big Class Families.
Ecco lo scenario:
A partire dal ' Grande classe 'Traccio il peso in funzione dell'altezza.
Per una questione di interesse, voglio vedere che aspetto ha JAMES.
Ho una sua foto in ' Famiglie di grandi classi 'così ho pensato di poter dare un'occhiata eseguendo una query quando passo il mouse sul marcatore di JAMES sul grafico a dispersione di GB.
Ho tentato di sfruttare la funzionalità Hover Label / Paste Graphlet. Dallo script qui sotto puoi vedere che la query può essere eseguita facilmente ma sfortunatamente ho dovuto codificare "JAMES" nella query.
Quello di cui ho bisogno è che il nome "JAMES" venga inserito in una variabile al passaggio del mouse e successivamente utilizzato nell'SQL. In questo modo potrei guardare l'immagine di qualsiasi persona semplicemente passando il mouse sopra il punto (i) di interesse.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp" );
Graph Builder(
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
dt = Open( "$Sample_Data/Big Class Families.jmp" );
//ImageFor = "JAMES";
ImQ = Query(
Table( dt, "t1" ),
"SELECT name, picture From t1 WHERE name = \!"JAMES\!" "
);
)
)}
)
)
);L'applicazione finale è per la revisione dei wafer semiconduttori, dove dopo aver creato un wafermap basato sulle posizioni dei difetti, la query torna al database e recupera l'immagine per il difetto di interesse. Quando il numero di difetti è talvolta abbastanza grande, non è pratico caricare tutte le immagini nel datatable a scopo di revisione.
Grazie,
Filippo
GraficaScriptingRi: Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Ciao @jpol ,
Questo è un esempio davvero interessante e hai ottenuto il 99%.
La variabile che stai cercando è nel contesto locale:
ImageFor = local:_name;
Le estensioni JSL del graphlet vengono eseguite all'interno di un blocco locale che chiamiamo Hover Label Execution Context, o HLEC in breve. Contiene variabili con dati e metadati (come i nomi delle colonne) estratti dalla definizione del grafico e dall'elemento visivo sottostante. È possibile trovare la documentazione delle variabili HLEC Qui.
Nel frammento di codice sopra, ho approfittato del fatto che il contenuto delle colonne etichettate è disponibile nell'HLEC per nome (con un prefisso "_") ma potresti anche avere il contenuto di qualsiasi colonna nella tabella sottostante utilizzando un riferimento all'indice diretto, in questo modo:
ImageFor = Column(local:_dataTable, "name")[local:_firstRow];
È importante utilizzare il comando Colonna () qui per assicurarti di ottenere il valore dalla tabella associata al grafico e non da quella che hai aperto per ottenere l'immagine.
Si prega di vedere gli script allegati che implementano il progetto, quindi evolverlo per mostrare l'immagine sulle miniature e aprire la tabella secondaria solo al clic.
Potresti anche voler controllare queste discussioni della Comunità che riguardano scenari simili:
* https://community.jmp.com/t5/Discussions/Hover-graphlet-from-another-data-table/mp/296005
* https://community.jmp.com/t5/Discussions/Hover-label/td-p/287358
Sul Community File Exchange, Visualizzatore di etichette e Wiki Reader , sono esempi di personalizzazioni avanzate di Graphlet che mostrano come visualizzare più immagini e immagini esterne, rispettivamente.
Ultimo ma non meno importante, una spina spudorata per la mia imminente presentazione della scoperta su Graphlets e il suo "impianto idraulico" sottostante.
https://community.jmp.com/t5/Discovery-Summit-Americas-2020/From-Details-on-Demand-to-Wandering-Workflows-Getting-to-know/ta-p/281539
Saluti,
Nascif
Ri: Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Ciao Nascif,
Grazie per la pronta risposta e l'ottima soluzione. Questa è esattamente la funzionalità che stavo cercando.
Proverò a costruire un esempio dell'applicazione finale e a condividerlo con te.
Sláinte,
Filippo
Ri: Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Eccellente!
Non vedere l'ora di.Ri: Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Ciao,
Ci scusiamo per il ritardo nel risponderti con la dimostrazione promessa.
Nel collegamento video qui sotto vedrai l'applicazione in uso.
Collegamento: https://www.loom.com/share/73150b6a45654d789a6d040bb661cddf
Dal video:
Utilizzando JMP i dati sui difetti vengono raccolti dal database dello strumento di ispezione.
JMP riepiloga quindi i conteggi dei difetti per lotto / wafer e li visualizza in un grafico a linee.
Se c'è un wafer di interesse, passo semplicemente con il mouse sopra l'indicatore di conteggio dei difetti e viene tracciato un layout di difetti dei wafer utilizzando i dati raccolti in precedenza.
Dopo aver selezionato un wafer di interesse, posso quindi passare il mouse su un indicatore di difetto, sulla mappa del wafer, che eseguirà una query SQL sul database delle immagini e visualizzerà l'immagine del difetto.
In questo modo non è necessario memorizzare un gran numero di immagini di difetti nella tabella dei dati. Basta ricordare e rivedere le poche immagini di interesse.
Grazie per il tuo supporto nello scripting.
- Filippo
PS Presenterò questa applicazione al Nordic JMP User Group il 9 ottobre:)
Ri: Come eseguire una query al passaggio del mouse, utilizzando i dati dal datapoint sottostante?Mi hai appena migliorato la giornata, buon signore.
Questo è davvero fantastico!
Grazie,
Nascif