In un precedente inviare , hai imparato a conoscere le preimpostazioni graphlet e il comando Incolla graflet. 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 funzione 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 accessibile anche direttamente dall'utente, consentendo l'implementazione di requisiti che non sono coperti dalle caratteristiche della porcellana.
Il framework delle estensioni delle etichette al passaggio del mouse
Un framework è 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 è quella JMP fornisce le definizioni preimpostate per comodità degli utenti.
A livello di framework, tutti i graphlet, inclusi i preset, utilizzano il formato Impostare Graphlet comando, ma ogni preimpostazione inizializza il framework con un diverso set 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 acquisisce informazioni contestuali sull'elemento visivo sottostante. I callback possono sfruttare queste informazioni contestuali per implementare un comportamento dinamico. Prendi, ad esempio, il preset Istogramma. Dopo aver esaminato il contesto per trovare l'assegnazione del ruolo Y della visualizzazione di riferimento, riutilizza tale colonna per la propria assegnazione del ruolo Y.
Altri punti di ingresso al framework delle estensioni delle etichette al passaggio del mouse includono Incolla Graphlet (un wrapper per Set Graphlet), Imposta testo , E Impostare Gridlet . In questo post utilizzeremo il comando Imposta Graphlet come esempio, ma gli stessi principi si applicano anche agli altri.
Il modo migliore per creare graphlet personalizzati è utilizzare il file Editor di etichette al passaggio del mouse dialogo. È inoltre possibile utilizzare l'editor di etichette al passaggio del mouse per controllare come viene definito un preset graphlet. Le definizioni preimpostate forniscono ottimi esempi di come utilizzare le funzionalità del framework.

Richiami Graphlet
Il pannello Graphlet di Hover Label Editor espone alcuni argomenti di script, i più importanti sono Picture and Click. Il framework li chiamerà in fase di esecuzione 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 l'utente posiziona il mouse su una barra in un grafico a barre, viene eseguito il frammento dello script Picture. In questo modo si ottiene 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 acquisirà e ridimensionerà uno screenshot del primo PictureBox rilevato. Quell'immagine diventa la miniatura visualizzata all'interno dell'etichetta al passaggio del mouse.
- Cliccando: 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 i preset lanciano 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 delle callback avviene all'interno di contesti di esecuzione, che hanno due componenti:
- Un filtro dati locale che sottoinsiemi 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 locali
Ogni elemento visivo in un grafico corrisponde a un sottoinsieme dei dati originali. Ad esempio, diamo un'occhiata a un grafico a barre che mostra la media dell'altezza degli studenti per sesso. La prima barra corrisponde alle studentesse; il secondo è per i maschi. Questo raggruppamento implicito avviene durante la definizione di una visualizzazione.
Il framework rende esplicito il raggruppamento attraverso un equivalente Filtro dati locali (LDF), utilizzato per limitare le righe della tabella dati visibili durante l'esecuzione della richiamata. 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, Overlay, ecc.).
- I valori associati a queste colonne.
Nell'esempio seguente, il grafico della linea di base è un piccolo grafico a barre multiple. Il framework lo associa a 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.

Un ulteriore controllo sull'inclusione delle colonne è possibile tramite il Salta i filtri attributi. Anche se raramente è necessario, può essere utile se si desidera visualizzare più dati di quelli normalmente associati all'elemento visivo sottostante.
Il meccanismo di base dietro approfondimenti è la capacità di avviare 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 di contesto al graphlet, che consente al graphlet di esibire un comportamento dinamico e sensibile al contesto. Il framework esegue il wrapping di ogni richiamata graphlet in uno spazio dei nomi locale prima di eseguirlo.
Lo spazio dei nomi locale 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 delle etichette (una variabile per ciascuna 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 il predefinito di contesto Textlet, che aggiunge i valori come testo all'etichetta al passaggio del mouse stessa, 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 grafico utilizzando l'argomento dello script Immagine.

Innanzitutto, il framework acquisisce un modello 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 di anteprima dell'etichetta al passaggio del mouse. Se l'utente fa clic su quell'immagine, avvia la piattaforma associata sulla propria finestra.
Un esempio di graphlet personalizzato
Ora che 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 (in particolare 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 memorizzate nelle sue tabelle JMP. Era possibile caricarli dal disco su richiesta?
C'erano alcuni ostacoli per far sì che ciò accadesse. Non si allineava con nessuno dei preset esistenti, non era adatto a 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 del 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 all'utente che fa clic 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
Sebbene ci auguriamo che tu sia sempre in grado di utilizzare i preset e incollare i 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!