grafici a torta+mappe termicheCiao a tutti,
Come biologo marino, recentemente mi sono imbattuto in una presentazione visiva dei dati sulla barriera corallina che mi piace molto (vedi allegato). In esso vedrai vari grafici a torta in cui i singoli spicchi sono essenzialmente mappe di calore per mostrare i livelli relativi di determinati parametri. Vorrei adattarlo per la mia ricerca e PENSO che possa essere fatto con Graph Builder, anche se non come mappa termica di per sé. Ecco la mia idea: diciamo che voglio quattro fette di torta che rappresentano quattro variabili di risposta (A, B, C e D). La dimensione non è importante, quindi darò a ciascuno un valore di 0,25 in modo che occupino aree uguali. Mi rendo conto che posso sovrapporre i colori, quindi ho creato una colonna "colore" e assegnato valori per le quattro variabili di risposta, ma il mio grafico non è cambiato di conseguenza.
Ho provato a colorare ed etichettare i valori, ma senza fortuna. Mi sento come se avessi sistemato il tavolo in modo sbagliato! Eventuali suggerimenti?? Grazie!
Ri: grafici a torta+mappe termicheAnderson,
L'esempio del corpo umano è usato qui: Analisi dei dati personali sulla dieta e sul fitness con JMP e qui: Utilizzo di mappe personalizzate come filtri di selezione per sottoinsiemi ed esplorare grafici dei miei dati di allenamento in JMP® 12
ti ho visto Presentazione del Discovery Summit Americas 2020 registrazione : Verso la previsione del destino dei coralli della barriera corallina (2020-US-45MP-615) ma non vedo l'ora di vederlo dal vivo!
~Giovanni
Ri: grafici a torta+mappe termicheJohn,
È fantastico e ho tutta l'intenzione di guardare il discorso la tua settimana (è nel mio programma). Penso che questa capacità, insieme ai "graphlet", aprirà tutti i tipi di porte per sovrapporre dati su grafici Graphbuilder e tracciare dati su figure personalizzate (come l'esempio del corpo umano di cui abbiamo parlato prima che si trova da qualche parte sul sito web di JMP in sotto forma di tutorial, credo). Sarò curioso di vedere se qualcuno ha qualche suggerimento in termini estetici. Personalmente mi piacciono i grafici a torta, ma forse esiste un modo migliore che non stiamo nemmeno prendendo in considerazione? Mi piace anche la tua idea delle "barre della salute" in stile videogioco.
Ora che ci penso, forse questo potrebbe avvantaggiare gli epidemiologi. Ad esempio, se si disponessero i tassi di infezione sovrapposti su una griglia lat-long e poi si fissassero spicchi/grafici a torta con informazioni aggiuntive su pazienti o gruppi di pazienti sul grafico del contorno, si potrebbe potenzialmente aggiungere uno strato di complessità che potrebbe non essere possibile utilizzando le funzionalità standard di GraphBuilder (suppongo che per la maggior parte dei tipi di dati, i graphlet funzionerebbero anche per questo).
Ri: grafici a torta+mappe termicheQuesta discussione mi ha ispirato a creare un documento e una presentazione per JMP Discovery Americas 2020.Cosa ottieni combinando un biologo marino, un videogioco e JMP? (2020-US-45MP-543)
Mentre preparavo il documento, ho avuto il tempo di sperimentare e migliorare le tecniche descritte in questo post.
Nel documento sono incluse alcune risorse (mappe personalizzate ed esempi) e istruzioni dettagliate su come utilizzarle.
Spero che troverete utili questo post e il mio articolo.
Grazie,
~Giovanni
Ri: grafici a torta+mappe termicheAnderson,
Il Costruttore di grafici non fornisce un modo per posizionare grafici a barre o grafici a torta in posizioni specifiche su una mappa. Puoi aggirare il problema:
- Creazione di una tabella dal grafico del Costruttore di grafici in cui utilizzi il numero di esempio nel ruolo della mappa (creato utilizzando barre o forme di mappa personalizzate. Ciò crea una tabella con la colonna del numero di campione e una colonna di immagini per ciascun campione.
- Copia la colonna dell'immagine dalla tabella generata alla tabella dei dati non impilati (assicurati che la colonna dell'immagine corrisponda all'ordine del numero del campione. **
- UN. Etichetta la colonna dell'immagine OPPURE b. Imposta "Utilizza come indicatore" per la colonna dell'immagine.
- Utilizzando la tabella dati non in pila, crea una mappa di contorno nel Costruttore di grafici utilizzando la colonna salinità o temporanea come ruolo colore.
- Aggiungi un elemento punti.Facoltativamente utilizzando un altro ruolo colore.
- Se segui il passaggio 3.a, le immagini appariranno nelle etichette al passaggio del mouse. Puoi appuntare alcune etichette al passaggio del mouse e sostituire il testo per rimuovere qualsiasi testo dell'etichetta al passaggio del mouse indesiderato.
- se segui il passaggio 3 b, tutti i marcatori verranno mostrati con l'immagine dalla colonna immagine. Ciò può causare una visualizzazione disordinata che è possibile risolvere ingrandendo o eliminando le immagini sovrapposte.
** Ho scoperto che non erano nello stesso ordine e ho dovuto ordinarli prima di copiare la colonna dell'immagine. Col senno di poi, mi sono reso conto che avrei potuto utilizzare un'unione o un'unione virtuale per ottenere le immagini sulle righe corrette. Vorrei aver letto prima questo: https://community.jmp.com/t5/JSL-Cookbook/Geographic-Maps-with-Graphs-as-Markers/ta-p/53782.
Ho pubblicato sia 3.a che 3.b qui:
https://public.jmp.com/packages/Heat-contour-with-image-annotations/js-p/5d64597acf28b80f980812ba

Riguardo al metodo che ho usato per disegnare le barre. Non ho utilizzato mappe personalizzate, ho utilizzato lo script grafico personalizzato per calcolare la lunghezza delle barre e posizionarle sopra ogni punto.
Quando si tratta di semplificare, JSL è spesso la scelta migliore.
~Giovanni
Ri: grafici a torta+mappe termicheJohn,
Questo è fantastico! Pensi che potrebbe essere fatto direttamente nel Graph Builder o richiederebbe scripting e conoscenze avanzate per farlo? So che posso semplicemente modificare lo script, ma sto solo pensando in termini di semplificazione se dovessi utilizzare questa opzione sui grafici a torta per tonnellate e tonnellate di dati. Richiedeva una forma personalizzata o hai bloccato manualmente tutte quelle icone nella mappa?
Oggetto: grafici a torta + mappe di calorePrego Anderson e DS,
Ho pubblicato un esempio migliore di script per la grafica personalizzata che annota tre variabili per ogni punto su una mappa.

È disponibile su JMP Public. Basta cliccare sul seguente link:
https://public.jmp.com/packages/5d605bce3560ce0d2cafd48b
Ho usato delle semplici barre (linee spesse) per rappresentare tre valori di cella fittizi per ogni punto. Le forme a torta richiederebbero un po' più di lavoro, ma volevo proporre questo come prova di concetto. Lo script JSL può essere visualizzato e scaricato dai dettagli del post su JMP Public.
~Giovanni
Ri: grafici a torta+mappe termicheOh! Questo è fantastico. Grazie per tutto l'aiuto e le informazioni Giovanni. Non avevo idea che esistesse la funzione di mappatura personalizzata, quindi sono andato in quella "tana del coniglio" per un giorno o due pensando a tutti i modi interessanti in cui avrei potuto usarla per tracciare i dati sulle immagini tracciate dei coralli che studio (purtroppo, tuttavia, raramente prendo tonnellate di campioni ALL'INTERNO della stessa colonia, anche se è sicuramente un'idea di progetto backburner, e questo sarebbe un modo interessante per visualizzare i risultati).
Penso che avere la capacità di tracciare dati su qualsiasi tipo di forma, immagine, ecc. sia sicuramente una funzionalità di JMP che più persone dovrebbero conoscere, e suggerisco che diventi una funzionalità effettiva all'interno del pacchetto in futuro (piuttosto che come una funzionalità componente aggiuntivo, sebbene il componente aggiuntivo funzioni correttamente per il momento).
A DS: in realtà avevo appena pensato di realizzare i miei grafici a torta e le mie mappe in JMP (tracciare i dati sulle mappe è piuttosto semplice con JMP dopo averlo fatto una o due volte), quindi utilizzare Adobe per creare i tipi di figure mostrato nel mio post originale, ma JMP ha la possibilità di annotare i punti dati sui grafici, fissandovi anche le immagini. Pertanto, con un po' di pratica e di lavoro, potresti benissimo creare praticamente l'INTERA figura di mappa+dati nel mio post originale solo in JMP. In effetti, potrei provare a fare proprio questo nelle prossime settimane.
Grazie ancora a John per aver fornito la soluzione!
Ri: grafici a torta+mappe termicheCIAO @John_Powell_JMP ,
Grazie per le informazioni aggiuntive. Ho aggiunto questa discussione ai segnalibri in modo da poterla avere in archivio e poi tornare indietro per rileggere le informazioni aggiuntive che hai inviato.
Scusa, temo di non aver spiegato cosa intendevo per contrassegnare il tuo post come soluzione: non credo di poterlo fare perché non ero l'utente originale (e quindi non ho questa opzione), non perché tu non ha affrontato la mappa termica. Mi scuso se è stato letto in questo modo: sono tornato e l'ho riletto, e sembra che lo stessi dicendo in questo modo (non va bene da parte mia).
Conosco JSL e lo uso per molte altre cose, ma non ho provato a usarlo per grafici personalizzati come questo, quindi questa sarà una nuova area da imparare!
Grazie!,
DSRe: grafici a torta+mappe termicheGrazie per le tue gentili parole @SDF1 .
Hai ragione, non ho risposto completamente alla parte sulla sovrapposizione di questi elementi grafici su una mappa di sfondo.
La sovrapposizione su una mappa richiederebbe un meccanismo diverso, come l'utilizzo dello script nella finestra di dialogo Personalizza: 
Sono forniti alcuni script di esempio:

Puoi trovare informazioni sulla funzionalità Personalizza qui:
https://www.jmp.com/support/help/14-2/customize-graphical-elements.shtml
Ecco un piccolo esempio con l'utilizzo dei cerchi:

Ri: grafici a torta+mappe termicheCIAO @John_Powell_JMP ,
Grazie per la tua risposta rapida e chiara. Prima di ricevere la tua risposta, ho riletto il post originale e mi sono reso conto di averlo sfogliato troppo velocemente e di aver notato la menzione delle ultime cinque colonne.
Ho quindi scaricato il contenuto da JMP Public e ho esaminato più approfonditamente i dettagli e ho notato il riferimento alla forma della mappa per le proprietà della colonna dell'etichetta. Non avevo esplorato questa possibilità in passato, quindi ho letto un po' e sperimentato le tue mappe. Molto bello!
Speravo di sovrapporre sullo sfondo anche la posizione di longitudine/latitudine del luogo in cui sono stati raccolti i dati sulla mappa del mondo, come nell'esempio del poster originale. Penso che questo vada oltre ciò che può essere fatto nel generatore di grafici, però; comunque sarebbe bello. È una bella idea di visualizzazione. Sì, posso sicuramente vedere quanto ciò possa essere utile per il mio lavoro. L'ho testato su alcuni dei nostri dati e tutto quello che devo fare è modificare il nome per l'ID forma e funziona. Molto bello grazie!
A proposito, vorrei contrassegnare il tuo post come soluzione (almeno per il grafico a torta), ma non credo di poterlo fare. JMP è in grado di eseguire sia il grafico a torta che il contorno (o mappa termica) come sperava il poster originale?
Grazie!,
DSRi: grafici a torta+mappe termicheHo impilato le colonne denominate: Sym GE HMS, host GE HMS, colore della colonia, variabilità e indice di aberranza sommato. Nella tabella allegata al post pubblico di JMP, ora si trovano nella colonna denominata Risposte con l'etichetta per ciascuna risposta (i vecchi nomi di colonna) nella colonna Etichetta.
JMP non crea automaticamente grafici "bullseye" a sezioni. Ci sono alcuni passaggi coinvolti:
- Ho creato i file di forma della mappa personalizzati forniti con il post pubblico di JMP che definiscono le sezioni e il centro.
- Nel Costruttore di grafici, ho trascinato la colonna Etichetta sul ruolo Forma (in basso a sinistra), che mostrava il contorno della forma personalizzata.
- Per applicare i colori, ho trascinato la colonna Risposte sul ruolo Colore (a destra). Questo riempie il modulo con le risposte medie per ciascun settore.
- Per separare ciascun campione, ho trascinato la colonna del numero del campione nel ruolo Wrap (in alto a destra).
Non posso prendermi il merito della bella idea di visualizzazione. Proviene dal poster originale.
Sono felice di vedere che può aiutare anche te.
~Giovanni
Ri: grafici a torta+mappe termicheCIAO @John_Powell_JMP ,
Sono davvero interessato a cimentarmi in questo per vedere se riesco ad adattarlo ad alcuni dei report che fa la mia attività.
Hai detto che hai impilato le colonne di interesse, ma quali sono quelle? Ho scaricato la tabella dei dati, ma non riesco a capire quali colonne sono necessarie per impilare. Inoltre, JMP genera automaticamente il grafico a torta come "occhio di bue" in sezione o si tratta di un'impostazione separata. Non ne ho mai visto uno simile prima. È una visualizzazione carina e nuova per me, motivo per cui mi incuriosisce.
Grazie!,
DSRe: grafici a torta+mappe termicheUna volta impilate le colonne di interesse, è possibile utilizzare una mappa personalizzata per ottenere la visualizzazione desiderata.
Ecco un esempio su JMP pubblico che utilizza i dati da te forniti.
Puoi trovare la mappa personalizzata e la tabella dei dati modificata qui:
https://public.jmp.com/packages/5d5aa110f40f010268e63cf4
~Giovanni
Ri: grafici a torta+mappe termicheSono ancora perplesso, quindi ho pensato di allegare il file di dati effettivo. Fondamentalmente, voglio inserire le ultime cinque colonne in un grafico a torta in cui i colori dei cuneo riflettono i colori nelle celle (racchiusi in base al numero di campione). Comincio a pensare che questo potrebbe non essere possibile con Graph Builder.....
Oggetto: grafici a torta + mappe di caloreCiao ,
Mi unisco a questa discussione piuttosto tardi, ma sto cercando di creare una visualizzazione molto simile. Sono particolarmente interessato alla soluzione "3.b", poiché vorrei visualizzare grafici a torta su una griglia che copra l'Europa (in questo caso, lo stile delle etichette risulta del tutto illeggibile).
Il punto è che quando uso i grafici come indicatori, lo sfondo è bianco, il che non ha un bell'aspetto sulle mappe: tendono a sovrapporsi agli angoli.
Sebbene io possa ridurre le dimensioni dell'area bianca regolando le dimensioni del grafico a torta, lo sfondo bianco rimane visibile. Esiste un modo per rendere questo sfondo trasparente o rimuoverlo completamente in JMP 17?
Johanna
Oggetto: grafici a torta + mappe di caloreCiao @johanna_younous ,
Benvenuti nella conversazione.
Quando mi sono unito per la prima volta a questa conversazione, anche i miei grafici avevano sfondi bianchi.
Quando ho fatto la presentazione di cui ho parlato prima, avevo capito come rendere trasparente lo sfondo.
Ho utilizzato il seguente script JSL per rendere trasparenti i pixel bianchi nella mia tabella di immagini, dove il nome della colonna delle immagini del grafico era "Grafico".
dt=CurrentDataTable();
For Each Row(
{r, g, b} = dt:Graph[] << getpixels( "rgb" );
a = !AND(r == g, g == b);
dt:Graph[] << setpixels( "rgba", {r, g, b, a} );
);
Questo rende trasparenti anche i pixel grigi laddove le componenti di colore rosso, verde e blu sono tutte uguali. Avevo anche del grigio nello sfondo.
Spero che funzioni per te.
~Giovanni
Oggetto: grafici a torta + mappe di caloreGrazie @John_Powell_JMP ,
Purtroppo, questo ciclo non funziona correttamente per me e fatico a capire il perché.
Quando eseguo il ciclo completo, lo sfondo bianco dei miei grafici non viene rimosso:
);
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=3
img =dtgraph:Graph[i] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[i] = img;
);
Ma se eseguo la procedura passo passo, l'aggiornamento viene applicato correttamente alla prima riga!
img =dtgraph:Graph[1] ;
{r, g, b} = img << getpixels( "rgb" );
// Pixel coloré → alpha = 1 (opaque)
// Pixel gris/blanc/noir (r==g==b) → alpha = 0 (transparent)
a = ! (r==g==b);
Wait(0);
img << setpixels("rgba", {r, g, b, a});
Wait(0);
dtgraph:Graph[1] = img;
Questa cosa mi sta facendo impazzire. Immagino che possa essere una questione di tempistiche di aggiornamento o qualcosa legato alla colonna "Tipo di espressione"?
Qualsiasi suggerimento sarebbe molto apprezzato 
Johanna
Oggetto: grafici a torta + mappe di caloreSebbene questa soluzione (e molti degli altri contributi) siano piuttosto innovativi, devo dire che non trovo i grafici a torta molto utili (mi ricorda la citazione di Tufte, che parafraserò dato che non ricordo esattamente dove l'abbia pronunciata: "l'unica cosa peggiore di un grafico a torta stupido è averne più di uno stupido"). Come al solito, i grafici a ciambella sono migliori dei grafici a torta, ma credo che in questo caso i grafici a barre funzionino molto meglio. Con i confronti multipli sulle 4 dimensioni si presentano un paio di problemi: il primo riguarda l'ordine delle fette e il secondo la loro dimensione. È più facile ordinare le barre che le fette di torta e anche le dimensioni sono molto più adatte rispetto alle barre. Potrebbero esserci altre rappresentazioni grafiche ancora migliori, ma non trovo affatto questi grafici a torta facili da interpretare.
Oggetto: grafici a torta + mappe di caloreNel frattempo, sono riuscito a farlo funzionare nel modo più sorprendente (dopo un lungo percorso di prove e fallimenti, come posso testimoniare, questo script è davvero tutt'altro che ottimale).
dtgraph= Graphbuild<< Make Into Data Table( );
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop1");
//exact same loop !!
For( i=1, i <= nrows(dtgraph) , i++, //i=6;
img =dtgraph:Graph[i] ; //
img1=char(img);
{r, g, b,a1} = img << Get Pixels( "rgba" );
a2 = !AND(r == g, g == b);
Wait(0);
eval(parse( "img << set Pixels(\!"rgba\!", {r, g, b, a2})" ));
img2= char(img);
print(img1==img2);
Wait(0);
dtgraph:Graph[i] = parse(char(img2));
img=empty();
);
print("fin loop2");
// log output
1
1
1
1
1
1
"fin loop1"
0
0
0
0
0
0
"fin loop2"
È un comportamento davvero, davvero strano, ma visto che funziona, diciamo che va bene così: ho dedicato fin troppo tempo a questo problema ^^
Sarei comunque molto interessato a qualsiasi spiegazione su questo fenomeno.
Oggetto: grafici a torta + mappe di caloreSono d'accordo con te su questo punto, tuttavia, su richiesta dei miei stakeholder... grafici a torta (e peggio ancora, grafici a radar)!
Oggetto: grafici a torta + mappe di calore@johanna_younous ,
Pur essendo contento che tu sia riuscito a trovare una soluzione e a condividerla con la community, concordo sul fatto che probabilmente esista una soluzione più semplice ed efficiente. Potrebbe darsi che i cicli "For Each" offrano dei vantaggi rispetto ai cicli "For".
Mi ha sorpreso vedere che hai usato "rgba" nella funzione Get Pixels, ma forse dopo aver eseguito lo script una volta, i pixel delle immagini avevano una componente alfa.
Nel punto in cui ho utilizzato il mio script, le immagini si trovavano in una tabella dati separata e collegate tramite un join virtuale. La tua situazione potrebbe essere diversa, il che spiegherebbe perché la modifica alle immagini si rifletta immediatamente nel mio caso.
Forse qualcuno nella community con maggiore esperienza di scripting JMP rispetto a me sarà in grado di fornire una soluzione o una spiegazione più semplice.
Grazie,
~Giovanni