Mappe ad albero

Panoramica

Una rappresentazione visiva di un albero di dati, dove ogni nodo può avere zero o più elementi secondari e un elemento padre (tranne quello principale, che non ha elementi padre). Ogni nodo viene visualizzato sotto forma di rettangolo, dimensioni e colore in base ai valori assegnati. Le dimensioni e i colori vengono valutati rispetto a tutti gli altri nodi nel grafico. Puoi specificare il numero di livelli da visualizzare contemporaneamente e, facoltativamente, visualizzare livelli più profondi in base a suggerimenti specifici. Se un nodo è una foglia, puoi specificare le dimensioni e il colore; se non è una foglia, verrà visualizzata come riquadro di delimitazione per i nodi delle foglie. Il comportamento predefinito prevede lo spostamento verso il basso dell'albero quando un utente fa clic con il pulsante sinistro del mouse su un nodo e lo spostamento in alto della finestra quando un utente fa clic con il pulsante destro del mouse sul grafico.

Le dimensioni totali del grafico sono determinate dalle dimensioni dell'elemento contenitore che inserisci nella pagina. Se hai nodi foglia con nomi troppo lunghi da mostrare, il nome verrà troncato con i puntini di sospensione (...).

Esempio

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['treemap']});
      google.charts.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Location', 'Parent', 'Market trade volume (size)', 'Market increase/decrease (color)'],
          ['Global',    null,                 0,                               0],
          ['America',   'Global',             0,                               0],
          ['Europe',    'Global',             0,                               0],
          ['Asia',      'Global',             0,                               0],
          ['Australia', 'Global',             0,                               0],
          ['Africa',    'Global',             0,                               0],
          ['Brazil',    'America',            11,                              10],
          ['USA',       'America',            52,                              31],
          ['Mexico',    'America',            24,                              12],
          ['Canada',    'America',            16,                              -23],
          ['France',    'Europe',             42,                              -11],
          ['Germany',   'Europe',             31,                              -2],
          ['Sweden',    'Europe',             22,                              -13],
          ['Italy',     'Europe',             17,                              4],
          ['UK',        'Europe',             21,                              -5],
          ['China',     'Asia',               36,                              4],
          ['Japan',     'Asia',               20,                              -12],
          ['India',     'Asia',               40,                              63],
          ['Laos',      'Asia',               4,                               34],
          ['Mongolia',  'Asia',               1,                               -5],
          ['Israel',    'Asia',               12,                              24],
          ['Iran',      'Asia',               18,                              13],
          ['Pakistan',  'Asia',               11,                              -52],
          ['Egypt',     'Africa',             21,                              0],
          ['S. Africa', 'Africa',             30,                              43],
          ['Sudan',     'Africa',             12,                              2],
          ['Congo',     'Africa',             10,                              12],
          ['Zaire',     'Africa',             8,                               10]
        ]);

        tree = new google.visualization.TreeMap(document.getElementById('chart_div'));

        tree.draw(data, {
          minColor: '#f00',
          midColor: '#ddd',
          maxColor: '#0d0',
          headerHeight: 15,
          fontColor: 'black',
          showScale: true
        });

      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

In evidenza

Puoi specificare se gli elementi devono essere evidenziati e impostare colori specifici per determinati elementi da utilizzare in questi casi. Per attivare l'evidenziazione, imposta highlightOnMouseOver:true (per v49 o precedenti) o enableHighlight: true (per v50+). Da qui puoi impostare i colori da utilizzare per evidenziare elementi utilizzando le varie opzioni di HighlightColor.

      var options = { // For v49 or before
        highlightOnMouseOver: true,
        maxDepth: 1,
        maxPostDepth: 2,
        minHighlightColor: '#8c6bb1',
        midHighlightColor: '#9ebcda',
        maxHighlightColor: '#edf8fb',
        minColor: '#009688',
        midColor: '#f7f7f7',
        maxColor: '#ee8100',
        headerHeight: 15,
        showScale: true,
        height: 500,
        useWeightedAverageForAggregation: true
      };
      var optionsV50 = { // For v50+
        enableHighlight: true,
        maxDepth: 1,
        maxPostDepth: 2,
        minHighlightColor: '#8c6bb1',
        midHighlightColor: '#9ebcda',
        maxHighlightColor: '#edf8fb',
        minColor: '#009688',
        midColor: '#f7f7f7',
        maxColor: '#ee8100',
        headerHeight: 15,
        showScale: true,
        height: 500,
        useWeightedAverageForAggregation: true,
        // Use click to highlight and double-click to drill down.
        eventsConfig: {
          highlight: ['click'],
          unhighlight: ['mouseout'],
          rollup: ['contextmenu'],
          drilldown: ['dblclick'],
        }
      };

Descrizione comando

Per impostazione predefinita, le descrizioni comando della mappa ad albero sono di base e mostrano l'etichetta della cella della mappa ad albero. Questo è utile quando le celle sono troppo piccole per contenere le etichette, ma puoi personalizzarle ulteriormente come descritto in questa sezione.

Le descrizioni comando della mappa ad albero sono personalizzate in modo diverso rispetto ad altri grafici: definisci una funzione e poi imposti l'opzione generateTooltip su tale funzione. Ecco un semplice esempio:

Nel grafico sopra, definiamo una funzione chiamata showStaticTooltip che restituisce semplicemente una stringa con il codice HTML da mostrare ogni volta che l'utente passa il mouse sopra una cella ad albero della mappa ad albero. Prova. Di seguito è riportato il codice da generare:

  var options = {
    minColor: '#e7711c',
    midColor: '#fff',
    maxColor: '#4374e0',
    showScale: true,
    generateTooltip: showStaticTooltip
  };

  tree.draw(data, options);

  function showStaticTooltip(row, size, value) {
    return '<div style="background:#fd9; padding:10px; border-style:solid">' +
           'Read more about the <a href="http://en.wikipedia.org/wiki/Kingdom_(biology)">kingdoms of life</a>.</div>';
  }

La funzione generateTooltip può essere qualsiasi JavaScript. Di solito, sono necessarie descrizioni comandi che variano in base ai valori dei dati. L'esempio seguente mostra come accedere a ogni campo nella tabella dati.

Se passi il mouse sopra le celle della mappa ad albero sopra, vedrai una descrizione comando diversa per ogni cella. La descrizione comando della mappa ad albero accetta tutti e tre i valori: row, size e value.

  • row: la riga della cella nella tabella dati
  • size: la somma del valore (colonna 3) di questa cella e di tutti i relativi elementi secondari
  • value: il colore della cella, espresso come numero da 0 a 1

In showFullTooltip, la stringa che restituiamo è un riquadro HTML con cinque righe:

  • La riga 1 mostra la riga appropriata dalla tabella dati, facendo un uso liberale di data.getValue.
  • La riga 2 indica la riga, ovvero il parametro row.
  • La riga 3 fornisce informazioni dalla colonna 3 della tabella dati: la somma del valore della colonna 3 di questa riga, più i valori dei discendenti.
  • La riga 4 fornisce informazioni della colonna 4 della tabella dati. Indica il valore, ma espresso come un numero compreso tra 0 e 1 corrispondente al colore della cella.
  var options = {
    minColor: '#e7711c',
    midColor: '#fff',
    maxColor: '#4374e0',
    showScale: true,
    generateTooltip: showFullTooltip
  };

  tree.draw(data, options);

  function showFullTooltip(row, size, value) {
    return '<div style="background:#fd9; padding:10px; border-style:solid">' +
           '<span style="font-family:Courier"><b>' + data.getValue(row, 0) +
           '</b>, ' + data.getValue(row, 1) + ', ' + data.getValue(row, 2) +
           ', ' + data.getValue(row, 3) + '</span><br>' +
           'Datatable row: ' + row + '<br>' +
	   data.getColumnLabel(2) +
           ' (total value of this cell and its children): ' + size + '<br>' +
	   data.getColumnLabel(3) + ': ' + value + ' </div>';
  }

}

Caricamento

Il nome del pacchetto google.charts.load è "treemap".

  google.charts.load("current", {packages: ["treemap"]});

Il nome della classe della visualizzazione è google.visualization.TreeMap.

  var visualization = new google.visualization.TreeMap(container);

Formato dei dati

Ogni riga nella tabella di dati descrive un nodo (un rettangolo nel grafico). Ogni nodo (tranne il nodo radice) ha un nodo padre. Ogni nodo è dimensionato e colorato in base ai suoi valori rispetto agli altri nodi attualmente mostrati.

La tabella dati deve avere quattro colonne nel formato seguente:

  • Colonna 0 - [string] Un ID per questo nodo. Può essere qualsiasi stringa JavaScript valida, inclusi gli spazi, e qualsiasi lunghezza che può contenere una stringa. Questo valore viene visualizzato come intestazione del nodo.
  • Colonna 1 - [stringa]: l'ID del nodo padre. Se si tratta di un nodo radice, lascia vuoto questo campo. È consentita una sola radice per mappa ad albero.
  • Colonna 2 - [numero] - Le dimensioni del nodo. È consentito qualsiasi valore positivo. Questo valore determina le dimensioni del nodo, calcolate rispetto a tutti gli altri nodi attualmente mostrati. Per i nodi non foglia, questo valore viene ignorato e calcolato in base alle dimensioni di tutte le relative unità secondarie.
  • Colonna 3 - [facoltativo, numero] - Un valore facoltativo utilizzato per calcolare un colore per questo nodo. È consentito qualsiasi valore, positivo o negativo, Il valore del colore viene prima ricalcolato su una scala da minColorValue a maxColorValue, poi al nodo viene assegnato un colore dal gradiente tra minColor e maxColor.

Opzioni di configurazione

Nome
Enablehighlight (per v50 e versioni successive)

Determina se gli elementi devono mostrare effetti evidenziati. L'attivazione predefinita avviene al passaggio del mouse. Il trigger può essere configurato con eventsConfig. Se è impostato su true, l'evidenziazione per elementi diversi può essere specificata utilizzando le varie opzioni highlightColor.

Tipo: booleano
Predefinito: falso
eventsConfig (per v50 e versioni successive)

La configurazione dell'evento per attivare le interazioni della mappa ad albero. Formato per configurare le interazioni:

eventsConfig: {
  interaction1: undefined, // or missing
  interaction2: [], // disable
  interaction3: [
    'mouse_event',
    'optional_key1',
    'optional_key2',
    'optional_key3',
    'optional_key4'
  ],
  ...,
}
        
Se la matrice di configurazione non è definita o è mancante per un'interazione, verrà utilizzato il valore predefinito.
Se la configurazione è un array vuoto, l'interazione verrà disattivata.
Per una configurazione valida, il campo mouse_event è obbligatorio e deve essere un evento mouse supportato. In seguito, potrai avere fino a quattro modificatori di chiavi facoltativi.
Interazioni supportate:
evidenziare, evidenziare, aggregare, visualizzare in dettaglio.
Eventi del mouse supportati:
'click', 'contextmenu', 'dblclick', 'mouseout', 'mouseover'. Con 'contextmenu' corrisponde al clic con il tasto destro del mouse.
Tasti di modifica eventi del mouse supportati:
'altKey', 'ctrlKey', 'metaKey', 'shiftKey'.
Scarica la configurazione attuale:
Metodo di chiamata getEventsConfig().
Esempio di utilizzo di Ctrl+Maiusc+Right_Click per salire nella struttura ad albero:
{ rollup: ['contextmenu', 'ctrlKey', 'shiftKey'] }
Tipo: oggetto
Predefinito:
{
  highlight: ['mouseover'],
  unhighlight: ['mouseout'],
  rollup: ['contextmenu'], // right-click
  drilldown: ['click']
}
Colore carattere

Il colore del testo. Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #IdP
Famiglia di caratteri

La famiglia di caratteri da utilizzare per tutto il testo.

Tipo: stringa
Predefinito: automatica
Dimensione carattere

Le dimensioni del carattere per tutto il testo, espresso in punti.

Tipo: numero
Predefinito: 12
forceIFrame

Disegna il grafico all'interno di un frame in linea. Tieni presente che su IE8, questa opzione viene ignorata, mentre tutti i grafici IE8 vengono disegnati negli i-frame.

Tipo: booleano
Predefinito: falso
coloreintestazione

Il colore della sezione di intestazione per ciascun nodo. Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #988f86
intestazioneAltezza

L'altezza della sezione di intestazione di ogni nodo, in pixel (può essere zero).

Numero Type
Predefinito: 0
intestazioneColoreColore

Il colore dell'intestazione di un nodo al passaggio del mouse. Specifica un valore di colore HTML o nullo; se nullo questo valore sarà headerColor illuminato dal 35%.

Tipo: stringa
Predefinito: null
highlightOnMouseOver (deprecato per v50+)

Deprecato per v50+. Per v50+, utilizza enableHighlight. Determina se gli elementi devono mostrare effetti evidenziati al passaggio del mouse. Se è impostato su true, l'evidenziazione per elementi diversi può essere specificata utilizzando le varie opzioni highlightColor.

Tipo: booleano
Predefinito: falso
hintOpacity

Se maxPostDepth è maggiore di 1, determinando la visualizzazione dei nodi al di sotto della profondità attuale, hintOpacity specifica la trasparenza. Deve essere compreso tra 0 e 1; quanto maggiore è il valore, tanto più basso sarà il nodo.

Tipo: numero
Predefinito: 0,0
Colore massimo

Il colore di un rettangolo con valore maxColorValue pari a colonna 3. Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #00dd00
Profondità massima

Il numero massimo di livelli di nodi da mostrare nella vista corrente. I livelli verranno suddivisi nel piano attuale. Se l'albero ha più livelli, dovrai salire o scendere per visualizzarli. Puoi anche vedere maxPostDepth livelli sotto questo livello come rettangoli ombreggiati all'interno di questi nodi.

Tipo: numero
Predefinito: 1
Colore principale in evidenza

Il colore di evidenziazione da utilizzare per il nodo con il valore più alto nella colonna 3. Specifica un valore di colore HTML o null; se nullo, questo valore sarà il valore di maxColor alleggerito del 35%

Tipo: stringa
Predefinito: null
Profondità massima di post

Quanti livelli di nodi oltre maxDepth vengono mostrati in modo "suggerito". I nodi suggeriti sono mostrati come rettangoli ombreggiati all'interno di un nodo che rientra nel limite di maxDepth.

Tipo: numero
Predefinito: 0
Valore massimo colore

Il valore massimo consentito nella colonna 3. Tutti i valori superiori a questo valore verranno tagliati a questo valore. Se viene impostato su null, verrà impostato il valore massimo nella colonna.

Tipo: numero
Predefinito: null
Mi piace

Il colore di un rettangolo con valore di colonna 3 a metà strada tra maxColorValue e minColorValue. Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #000000
Colore mette in evidenza il colore

Il colore di evidenziazione da utilizzare per il nodo con un valore colonna 3 vicino alla mediana di minColorValue e maxColorValue. Specifica un valore di colore HTML o null; se nullo, questo valore sarà il valore di midColor illuminato dal 35%.

Tipo: stringa
Predefinito: null
Colore min

Il colore di un rettangolo con il valore colonna 3 minColorValue. Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #dd0000
minEvidenzia colore

Il colore di evidenziazione da utilizzare per il nodo con un valore della colonna più vicino a minColorValue. Specifica un valore di colore HTML o null; se null, questo valore sarà il valore di minColor illuminato dal 35%

Tipo: stringa
Predefinito: null
Valore colore min

Il valore minimo consentito nella colonna 3. Tutti i valori inferiori a questo valore verranno tagliati a questo valore. Se impostato su null, il valore verrà calcolato come valore minimo nella colonna.

Tipo: numero
Predefinito: null
Nessun colore

Il colore da utilizzare per un rettangolo quando un nodo non ha un valore per la colonna 3 e ha una foglia (o contiene solo foglie). Specifica un valore di colore HTML.

Tipo: stringa
Predefinito: #000000
Nessun coloreIn evidenza

Il colore da utilizzare per un rettangolo di colore "no" quando evidenziato. Specifica un valore di colore HTML o null; se null, questo sarà il valore di noColor illuminato dal 35%.

Tipo: stringa
Predefinito: null
scalaScala

Consente di indicare se mostrare o meno una scala di gradiente di colore da minColor a maxColor nella parte superiore del grafico. Specifica true per mostrare la bilancia.

Tipo: booleano
Predefinito: falso
suggerimenti strumenti per la visualizzazione

Indica se mostrare le descrizioni comando.

Tipo: booleano
Predefinito: true
stile testo

Un oggetto che specifica lo stile di testo, per determinati grafici con testo nell'area dei contenuti come la mappa ad albero. L'oggetto ha questo formato:

{ color: <string>,
  fontName: <string>,
  fontSize: <number>,
  bold: <boolean>,
  italic: <boolean> }
    

color può essere una qualsiasi stringa di colore HTML, ad esempio: 'red' o '#00cc00'. Vedi anche fontName e fontSize.

Tipo: oggetto
Predefinito: {color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
title

Testo da visualizzare sopra il grafico.

Tipo: stringa
Predefinito: nessun titolo
titoloTestoStile

Un oggetto che specifica lo stile del testo del titolo. L'oggetto ha questo formato:

{ color: <string>,
  fontName: <string>,
  fontSize: <number>,
  bold: <boolean>,
  italic: <boolean> }
    

color può essere una qualsiasi stringa di colore HTML, ad esempio: 'red' o '#00cc00'. Vedi anche fontName e fontSize.

Tipo: oggetto
Predefinito: {color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
usaPonderataMediaPerAggregazione

Indica se utilizzare medie ponderate per l'aggregazione.

Tipo: booleano
Predefinito: falso

Metodi

Metodo
draw(data, options)

Disegna il grafico.

Tipo di reso: nessuno
getEventsConfig() (for v50+)

Restituisce la configurazione dell'interazione corrente. Può essere utilizzato per verificare l'opzione di configurazione eventsConfig

Tipo di reso: oggetto
{ // An empty array (i.e. []) means the interaction is disabled.
  highlight: string[],
  unhighlight: string[],
  rollup: string[],
  drilldown: string[] }
getSelection()

Implementazione getSelection() standard. Gli elementi selezionati sono nodi. Puoi selezionare un solo nodo alla volta.

Tipo di reso: array di elementi di selezione
setSelection()

Implementazione setSelection() standard. Gli elementi selezionati sono nodi. Puoi selezionare un solo nodo alla volta.

Tipo di reso: nessuno
goUpAndDraw()

Sali di un livello verso l'alto e disegna di nuovo. Non genera un errore se il nodo è il nodo radice. Viene attivato automaticamente quando l'utente fa clic con il tasto destro del mouse su un nodo.

Tipo di reso: nessuno
getMaxPossibleDepth()

Restituisce la profondità massima possibile per la vista corrente.

Tipo di reso: numero
clearChart()

Cancella il grafico e rilascia tutte le risorse allocate.

Tipo di reso: nessuno

Eventi

Consulta eventsConfig per attivare attivatori di eventi configurabili.
Nome
onmouseover

Attivato quando l'utente passa il mouse sopra un nodo. Il gestore di eventi trasmette l'indice della riga della voce corrispondente nella tabella dati.

Proprietà: riga
highlight (for v50+)

Attivato quando l'utente evidenzia un nodo. L'attivatore predefinito è il mouseover. Può essere configurato con eventsConfig per v50+. Il gestore di eventi trasmette l'indice della riga della voce corrispondente nella tabella dati.

Proprietà: riga
onmouseout

Attivato quando l'utente sposta il puntatore del mouse fuori da un nodo. Il gestore di eventi trasmette l'indice della riga della voce corrispondente nella tabella dati.

Proprietà: riga
unhighlight (for v50+)

Attivato quando l'utente annulla l'evidenziazione di un nodo. L'attivatore predefinito è mouseout. Può essere configurato con eventsConfig per v50+. Il gestore di eventi trasmette l'indice della riga della voce corrispondente nella tabella dati.

Proprietà: riga
ready

Attivato quando il grafico è pronto per le chiamate ai metodi esterni. Se vuoi interagire con il grafico e i metodi di chiamata dopo averlo disegnato, devi configurare un listener per questo evento prima di chiamare il metodo draw e chiamarlo solo dopo che l'evento è stato attivato.

Proprietà: nessuna
rollup

Attivato quando l'utente torna indietro nell'albero. L'attivatore predefinito sta facendo clic con il tasto destro del mouse. Può essere configurato con eventsConfig per v50+. La proprietà della riga passata nel gestore di eventi è la riga del nodo da cui l'utente sta navigando da, non la riga a cui l'utente sta navigando .

Proprietà: riga
select

Attivato quando l'utente visualizza in dettaglio o esegue il rollback di un nodo. Attivato anche quando viene richiamato il metodo setSelection() o goUpAndDraw(). Per scoprire quale nodo è stato selezionato, chiama getSelection().

Proprietà: nessuna
drilldown (for v50+)

Attivato quando l'utente si sposta più in profondità nell'albero. L'attivatore predefinito sta facendo clic. Può essere configurato con eventsConfig per v50+. Per sapere su quale nodo è stato fatto clic, chiama getSelection().

Proprietà: nessuna

Norme sui dati

Tutto il codice e i dati vengono elaborati e visualizzati nel browser. Nessun dato viene inviato ad alcun server.