In un precedente inviare , hai imparato a conoscere le preimpostazioni graphlet e il comando Incolla Graphlet. Ti abbiamo mostrato come supportano miniature di visualizzazione cliccabili e sensibili al contesto nelle etichette al passaggio del mouse. Questi comandi implementano l'aspetto "porcellana" della funzionalità delle estensioni delle etichette al passaggio del mouse di JMP 15, fornendo un'interfaccia intuitiva che non richiede alcuna competenza di codifica.
In questo post vedrai meglio lo strato "idraulico" sottostante che alimenta lo strato di porcellana. Questo strato è concepito come una struttura a cui può accedere anche direttamente l'utente, consentendo l'implementazione di requisiti che non sono coperti dalle caratteristiche della porcellana.
Il framework delle estensioni delle etichette al passaggio del mouse
Una struttura è una combinazione di servizi di base e punti di estensione. Dal punto di vista del framework, i preset e i graphlet personalizzati sono identici, quindi l'unica differenza è questa JMP fornisce le definizioni preimpostate per comodità degli utenti.
A livello di framework, tutti i graphlet, inclusi i preset, utilizzano il file Imposta grafico comando, ma ogni preimpostazione inizializza il framework con un diverso insieme di argomenti. Questi argomenti includono frammenti di script JSL, successivamente utilizzati come callback. Il framework valuta questi callback in risposta alle interazioni dell'utente, come il passaggio del mouse su un elemento visivo o il clic sulla miniatura di un'etichetta al passaggio del mouse.
La valutazione della richiamata avviene all'interno di un file Contesto di esecuzione dell'etichetta al passaggio del mouse (HLEC), che cattura informazioni contestuali sull'elemento visivo sottostante. I callback possono sfruttare queste informazioni contestuali per implementare il comportamento dinamico. Prendi, ad esempio, la preimpostazione Istogramma. Dopo aver esaminato il contesto per trovare l'assegnazione del ruolo Y della visualizzazione di base, riutilizza quindi quella colonna per la propria assegnazione del ruolo Y.
Altri punti di accesso al framework delle estensioni dell'etichetta al passaggio del mouse includono Incolla grafico (un wrapper per Set Graphlet), Imposta testo , E Impostare la griglia . In questo post utilizzeremo il comando Set Graphlet come esempio, ma gli stessi principi si applicano anche agli altri.
Il modo migliore per creare graphlet personalizzati è utilizzare il file Editor delle etichette al passaggio del mouse dialogo. Puoi anche utilizzare l'editor delle etichette al passaggio del mouse per verificare come viene definita una preimpostazione graphlet. Le definizioni preimpostate forniscono ottimi esempi di come utilizzare le funzionalità del framework.

Callback graphlet
Il pannello Graphlet dell'editor di etichette al passaggio del mouse espone alcuni argomenti di script, i più importanti sono Immagine e clic. Il framework li chiamerà in fase di runtime in risposta ai seguenti eventi:
- In bilico: Quando l'utente posiziona il puntatore del mouse su un elemento visivo per un breve periodo di tempo, ad esempio quando posiziona il mouse su una barra in un grafico a barre, viene eseguito il frammento di script Immagine. In questo modo si otterrà la produzione di un PictureBox (a casella di visualizzazione che contiene un oggetto immagine grafica) o a albero di visualizzazione che contiene un PictureBox. Se lo script richiede l'esecuzione di una Piattaforma, verrà lanciato all'interno di una finestra invisibile. Il framework attraverserà quindi l'albero di visualizzazione del risultato e quindi catturerà e ridurrà uno screenshot del primo PictureBox incontrato. Quell'immagine diventa la miniatura visualizzata all'interno dell'etichetta al passaggio del mouse.
- Facendo clic su: Quando l'utente fa clic con il pulsante sinistro del mouse sulla miniatura del graphlet dell'etichetta al passaggio del mouse, viene attivato l'argomento facoltativo Click. Se non è presente, lo script Picture viene riutilizzato, ma l'esecuzione di una piattaforma contenuta risulta in una finestra visibile. Ecco come le preimpostazioni avviano le loro visualizzazioni.
Il callback Click può eseguire script JSL arbitrari. Ad esempio, può aprire pagine web, effettuare chiamate REST, caricare file da disco e aggiornare tabelle. Consente l'integrazione con dati esterni, sistemi e altri scenari avanzati.
Come accennato in precedenza, la valutazione dei callback avviene all'interno di contesti di esecuzione, che hanno due componenti:
- Un filtro dati locale che sottoimposta le righe in modo che corrispondano ai dati dell'elemento visivo.
- Uno spazio dei nomi locale che acquisisce gli attributi dell'elemento visivo.
Filtro dati locale
Ogni elemento visivo in un grafico corrisponde a un sottoinsieme dei dati originali. Ad esempio, guardiamo un grafico a barre che mostra l'altezza media degli studenti per sesso. La prima battuta corrisponde alle studentesse; la seconda è per i maschi. Questo raggruppamento implicito avviene durante la definizione di una visualizzazione.
Il framework rende esplicito il raggruppamento attraverso un equivalente Filtro dati locale (LDF), utilizzato per limitare le righe della tabella dati visibili durante l'esecuzione del callback. La definizione LDF si basa su:
- Il tipo di grafico di visualizzazione della linea di base.
- Le colonne assegnate ai relativi ruoli di raggruppamento (X, Gruppo X/Y, Sovrapposizione, ecc.).
- I valori associati a queste colonne.
Nell'esempio seguente, il grafico di base è un grafico a barre con multipli piccoli. Il framework lo mappa su un LDF in base alle sue due variabili di raggruppamento:
- Quello assegnato al ruolo X (età).
- Quello assegnato al Gruppo Y (sesso).
Nota come la barra al passaggio del mouse e il pannello che contiene il grafico generano i valori del filtro.

È possibile un ulteriore controllo sull'inclusione delle colonne tramite Salta filtri attributi. Sebbene sia raramente necessario, può essere utile se si desidera visualizzare più dati di quelli normalmente associati all'elemento visivo sottostante.
Il meccanismo principale dietro drill-down è la capacità di lanciare piattaforme con LDF basati sul contesto in risposta alle interazioni dell'utente.
Spazio dei nomi locale
Il secondo componente dell'HLEC è a spazio dei nomi locale . Il suo scopo principale è esporre le informazioni sul contesto al graphlet, che consente al graphlet di esibire un comportamento dinamico e sensibile al contesto. Il framework racchiude ogni callback graphlet in uno spazio dei nomi locale prima di eseguirlo.
Lo spazio dei nomi locali del graphlet è popolato dal framework con variabili locali. Questi variabili di contesto seguono una convenzione di denominazione, il che significa che i loro nomi devono sempre iniziare con un carattere di sottolineatura. Catturano informazioni da diverse fonti associate al contesto di esecuzione corrente:
- Tipo di elemento visivo al passaggio del mouse (barra, indicatore, ecc.).
- Indice della prima riga dei dati associati.
- Numero di osservazioni nei dati associati.
- Passa il mouse sulle voci della griglia dell'etichetta (una variabile per ogni voce).
- Tipo di richiamata (Immagine, Clic, ecc.).
- LDF dove clausola.
- I livelli di drill-down contano.
Un modo semplice per controllare i valori di un nuovo graphlet durante il debug è utilizzare la preimpostazione del contesto Textlet, che aggiunge i valori come testo all'etichetta stessa al passaggio del mouse, come mostrato di seguito:

Mettere tutto insieme
Il diagramma seguente mostra come le diverse parti del framework si uniscono nell'esecuzione di un preset graphlet. In un graphlet personalizzato, l'utente fornisce il modello di grafico utilizzando l'argomento Script immagine.

Innanzitutto, il framework acquisisce un modello di grafico e altri argomenti al momento della configurazione. Successivamente, in risposta alle interazioni dell'utente, crea il filtro e lo spazio dei nomi che fanno parte dell'HLEC. Crea un'istanza del modello all'interno dell'HLEC per generare l'immagine in miniatura dell'etichetta al passaggio del mouse. Se l'utente fa clic su quell'immagine, avvia la piattaforma associata nella propria finestra.
Un esempio di graphlet personalizzato
Ora che ne hai compreso i meccanismi, ecco un esempio di come l'accesso al framework graphlet sottostante ha aiutato un utente a risolvere un problema reale.
Non molto tempo fa, un utente ha posto una domanda qui nel Comunità di utenti JMP . Aveva una cartella con file di immagini (nello specifico, immagini ad alta risoluzione) dei suoi esperimenti. Voleva visualizzare l'immagine associata a un esperimento nell'etichetta al passaggio del mouse, ma le immagini erano troppo grandi per essere archiviate nelle tabelle JMP. Era possibile caricarli dal disco su richiesta?
Ci sono stati alcuni ostacoli affinché ciò accadesse. Non si allineava con nessuna delle preimpostazioni esistenti, non era adatto per Paste Graphlet poiché richiedeva un comportamento dinamico e il nome del file per l'immagine visualizzata doveva essere calcolato su richiesta.
La soluzione era creare un graphlet personalizzato estendendo il framework con callback basati su primitive di file JSL.
I principi di tale soluzione sono mostrati di seguito in un esempio basato sul set di dati Iris. La parte critica di questo esempio è mostrare come l'immagine può essere caricata direttamente dal disco. Il nome file si basa su una delle variabili dello spazio dei nomi locale HLEC. Come bonus, puoi vedere come aprire una pagina web correlata in risposta al clic dell'utente sull'immagine visualizzata.
Set Graphlet(
// Value from hover label grid entry (labeled column)
Picture(
Picture Box( Open( img_dir || local:_Species || ".jpg", "jpg" ) )
),
// Value from data table using column reference for visualized row
Click(
Web( "https://en.wikipedia.org/wiki/Iris_" || Column( "Species" )[local:_firstRow] )
)
)

Conclusione
Anche se speriamo che tu sia sempre in grado di utilizzare preimpostazioni e incollare graphlet per implementare la maggior parte delle tue esigenze, ci rendiamo conto che non è sempre possibile. Utilizzando il framework, puoi creare le tue estensioni di etichette al passaggio del mouse personalizzate ogni volta che hai un'esigenza speciale.
Se hai domande, vuoi condividere le tue creazioni o semplicemente vedere cosa stanno inventando gli altri utenti, unisciti a noi qui nel Comunità di utenti JMP . Non vediamo l'ora di vedere il tuo prossimo fantastico graphlet!