Древовидные карты

Обзор

Визуальное представление дерева данных, где каждый узел может иметь ноль или более дочерних узлов и одного родительского узла (за исключением корня, у которого нет родителей). Каждый узел отображается в виде прямоугольника, размер и цвет которого соответствуют назначенным вами значениям. Размеры и цвета оцениваются относительно всех остальных узлов графа. Вы можете указать, сколько уровней будет отображаться одновременно, а также, при необходимости, отображать более глубокие уровни в виде подсказок. Если узел является конечным узлом, вы можете указать размер и цвет; если это не лист, он будет отображаться как ограничивающая рамка для листовых узлов. Поведение по умолчанию — перемещение вниз по дереву, когда пользователь щелкает левой кнопкой мыши узел, и перемещение обратно вверх по дереву, когда пользователь щелкает график правой кнопкой мыши.

Общий размер графика определяется размером содержащего его элемента, который вы вставляете на свою страницу. Если у вас есть листовые узлы с именами, слишком длинными для отображения, имя будет сокращено до многоточия (...).

Пример

<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>

Основные моменты

Вы можете указать, должны ли элементы выделяться, и установить определенные цвета для определенных элементов, которые будут использоваться в этом случае. Чтобы включить подсветку, установите highlightOnMouseOver:true (для версии 49 или более ранней) или enableHighlight: true (для версии 50+). Отсюда вы можете установить цвета для выделения элементов, используя различные параметры 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'],
        }
      };

Подсказки

По умолчанию всплывающие подсказки древовидной карты являются базовыми и показывают метку ячейки древовидной карты. Это полезно, когда ячейки слишком малы для размещения меток, но вы можете настроить их дополнительно, как описано в этом разделе.

Всплывающие подсказки древовидной карты настраиваются иначе, чем другие диаграммы: вы определяете функцию, а затем устанавливаете для этой функции generateTooltip . Вот простой пример:

На приведенной выше диаграмме мы определяем функцию под названием showStaticTooltip , которая просто возвращает строку с HTML-кодом, который будет отображаться всякий раз, когда пользователь наводит курсор на ячейку древовидной карты. Попробуй это! Код для его создания выглядит следующим образом:

  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>';
  }

generateTooltip может представлять собой любой JavaScript, который вам нравится. Обычно вам нужны всплывающие подсказки, которые различаются в зависимости от значений данных. В следующем примере показано, как получить доступ к каждому полю в таблице данных.

Если вы наведете курсор на ячейки в древовидной карте выше, вы увидите разные всплывающие подсказки для каждой ячейки. Все функции подсказки древовидной карты принимают три значения: row , size и value .

  • row : строка ячейки из таблицы данных
  • size : сумма значений (столбец 3) этой ячейки и всех ее дочерних элементов.
  • value : цвет ячейки, выраженный числом от 0 до 1.

В showFullTooltip строка, которую мы возвращаем, представляет собой HTML-поле из пяти строк:

  • В строке 1 показана соответствующая строка из таблицы данных, при этом широко используется data.getValue .
  • Строка 2 сообщает вам, что это за строка, и это всего лишь параметр row .
  • В строке 3 выводится информация из столбца 3 таблицы данных: сумма значений столбца 3 из этой строки плюс значения потомков.
  • В строке 4 представлена ​​информация из столбца 4 таблицы данных. Это значение, но выраженное в виде числа от 0 до 1, соответствующего цвету ячейки.
  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>';
  }

}

Загрузка

Имя пакета google.charts.load"treemap" .

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

Имя класса визуализации — google.visualization.TreeMap .

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

Формат данных

Каждая строка в таблице данных описывает один узел (прямоугольник на графике). Каждый узел (кроме корневого узла) имеет один родительский узел. Каждый узел имеет размер и цвет в соответствии с его значениями относительно других узлов, отображаемых в данный момент.

Таблица данных должна иметь четыре столбца в следующем формате:

  • Столбец 0 – [ строка ] Идентификатор этого узла. Это может быть любая допустимая строка JavaScript, включая пробелы, и любой длины, которую может содержать строка. Это значение отображается как заголовок узла.
  • Столбец 1 — [ строка ] — идентификатор родительского узла. Если это корневой узел, оставьте это поле пустым. Для каждой карты дерева разрешен только один корень.
  • Столбец 2 — [ число ] — Размер узла. Допускается любое положительное значение. Это значение определяет размер узла, вычисляемый относительно всех других узлов, отображаемых в данный момент. Для нелистовых узлов это значение игнорируется и рассчитывается на основе размера всех его дочерних узлов.
  • Столбец 3 — [ необязательно , число ] — необязательное значение, используемое для расчета цвета для этого узла. Допускается любое значение, положительное или отрицательное. Значение цвета сначала пересчитывается по шкале от minColorValue до maxColorValue , а затем узлу присваивается цвет из градиента между minColor и maxColor .

Параметры конфигурации

Имя
EnableHighlight (для v50+)

Определяет, должны ли элементы отображать выделенные эффекты. Триггер по умолчанию — при наведении курсора мыши. Триггер можно настроить с помощью eventsConfig . Если установлено значение true , подсветку различных элементов можно указать с помощью различных параметров highlightColor .

Тип: логический
По умолчанию: ложь
eventConfig (для v50+)

Конфигурация событий для запуска взаимодействия с древовидной картой. Формат для настройки взаимодействия:

eventsConfig: {
  interaction1: undefined, // or missing
  interaction2: [], // disable
  interaction3: [
    'mouse_event',
    'optional_key1',
    'optional_key2',
    'optional_key3',
    'optional_key4'
  ],
  ...,
}
        
Если массив конфигурации не определен или отсутствует для взаимодействия, будет использоваться значение по умолчанию .
Если конфиг представляет собой пустой массив, взаимодействие будет отключено.
Для корректной конфигурации необходимо указать mouse_event , которое должно быть поддерживаемым событием мыши. Тогда вы можете иметь до четырех дополнительных ключевых модификаторов.
Поддерживаемые взаимодействия:
выделить, снять выделение, свернуть, детализировать .
Поддерживаемые события мыши:
«клик», «контекстное меню», «dblclick», «mouseout», «наведение курсора» . «Контекстное меню» соответствует щелчку правой кнопкой мыши.
Поддерживаемые клавиши-модификаторы событий мыши:
«altKey», «ctrlKey», «metaKey», «shiftKey» .
Получите текущую конфигурацию:
Вызовите метод getEventsConfig() .
Пример использования Control+Shift+Right_Click для перехода вверх по дереву:
{ rollup: ['contextmenu', 'ctrlKey', 'shiftKey'] }
Тип: объект
По умолчанию:
{
  highlight: ['mouseover'],
  unhighlight: ['mouseout'],
  rollup: ['contextmenu'], // right-click
  drilldown: ['click']
}
Цвет шрифта

Цвет текста. Укажите значение цвета HTML.

Тип: строка
По умолчанию: #ffffff
семейство шрифтов

Семейство шрифтов, используемое для всего текста.

Тип: строка
По умолчанию: авто
размер шрифта

Размер шрифта всего текста в пунктах.

Тип: номер
По умолчанию: 12
сила IFrame

Рисует диаграмму внутри встроенного фрейма. (Обратите внимание, что в IE8 этот параметр игнорируется; все диаграммы IE8 рисуются в i-кадрах.)

Тип: логический
По умолчанию: ложь
заголовокЦвет

Цвет раздела заголовка для каждого узла. Укажите значение цвета HTML.

Тип: строка
По умолчанию: #988f86.
высота заголовка

Высота раздела заголовка для каждого узла в пикселях (может быть равна нулю).

Введите номер
По умолчанию: 0
заголовокHighlightColor

Цвет заголовка узла, над которым наведен курсор. Укажите значение цвета HTML или ноль; если значение равно нулю, это значение будет headerColor на 35%.

Тип: строка
По умолчанию: ноль
ВыделитеOnMouseOver (устарело для версии 50+)

Устарело для v50+. Для версии 50 и более поздних используйте enableHighlight . Определяет, должны ли элементы отображать выделенные эффекты при наведении курсора мыши. Если установлено значение true , подсветку различных элементов можно указать с помощью различных параметров highlightColor .

Тип: логический
По умолчанию: ложь
подсказкаНепрозрачность

Когда maxPostDepth больше 1, что приводит к отображению узлов ниже текущей глубины, hintOpacity указывает, насколько прозрачными они должны быть. Оно должно быть между 0 и 1; чем выше значение, тем тусклее узел.

Тип: номер
По умолчанию: 0,0
МаксКолор

Цвет прямоугольника со значением столбца 3 maxColorValue . Укажите значение цвета HTML.

Тип: строка
По умолчанию: #00dd00
Максимальная глубина

Максимальное количество уровней узлов, отображаемых в текущем представлении. Уровни будут сглажены в текущей плоскости. Если в вашем дереве больше уровней, вам придется подняться или опуститься, чтобы увидеть их. Вы также можете увидеть уровни maxPostDepth ниже этого уровня в виде заштрихованных прямоугольников внутри этих узлов.

Тип: номер
По умолчанию: 1
maxHighlightColor

Цвет выделения, который будет использоваться для узла с наибольшим значением в столбце 3. Укажите значение цвета HTML или нулевое значение; Если значение равно нулю, это значение будет значением maxColor , освещенным на 35 %.

Тип: строка
По умолчанию: ноль
МаксПостДепт

Сколько уровней узлов за пределами maxDepth нужно показывать в виде «намеков». Узлы с подсказками отображаются в виде заштрихованных прямоугольников внутри узла, находящегося в пределах предела maxDepth .

Тип: номер
По умолчанию: 0
Максколорвалуе

Максимальное значение, разрешенное в столбце 3. Все значения, превышающие это значение, будут обрезаны до этого значения. Если установлено значение null, ему будет присвоено максимальное значение в столбце.

Тип: номер
По умолчанию: ноль
мидколор

Цвет прямоугольника со значением столбца 3, находящимся посередине между maxColorValue и minColorValue . Укажите значение цвета HTML.

Тип: строка
По умолчанию: #000000
MidHighlightColor

Цвет выделения, который будет использоваться для узла со значением столбца 3 рядом с медианой minColorValue и maxColorValue . Укажите значение цвета HTML или ноль; если значение равно нулю, это значение будет значением midColor , освещенным на 35%.

Тип: строка
По умолчанию: ноль
минколор

Цвет прямоугольника со значением minColorValue в столбце 3. Укажите значение цвета HTML.

Тип: строка
По умолчанию: #dd0000
minHighlightColor

Цвет выделения, используемый для узла со значением столбца 3, ближайшим к minColorValue . Укажите значение цвета HTML или ноль; если значение равно нулю, это значение будет значением minColor , освещенным на 35 %.

Тип: строка
По умолчанию: ноль
минколорвалуе

Минимальное значение, разрешенное в столбце 3. Все значения меньше этого значения будут обрезаны до этого значения. Если установлено значение null, оно будет рассчитано как минимальное значение в столбце.

Тип: номер
По умолчанию: ноль
noColor

Цвет, используемый для прямоугольника, когда узел не имеет значения для столбца 3 и этот узел является листом (или содержит только листья). Укажите значение цвета HTML.

Тип: строка
По умолчанию: #000000
noHighlightColor

Цвет, используемый для прямоугольника цвета «нет», когда он выделен. Укажите значение цвета HTML или ноль; если значение равно нулю, это будет значение noColor , освещенное на 35%.

Тип: строка
По умолчанию: ноль
шоуМасштаб

Показывать ли шкалу цветового градиента от minColor до maxColor в верхней части диаграммы. Укажите true, чтобы отобразить масштаб.

Тип: логический
По умолчанию: ложь
Показать подсказки

Показывать ли всплывающие подсказки.

Тип: логический
По умолчанию: правда
текстовый стиль

Объект, определяющий стиль текста для определенных диаграмм, в области содержимого которых есть текст, например в древовидной карте. Объект имеет следующий формат:

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

color может быть любой цветовой строкой HTML, например: 'red' или '#00cc00' . Также см. fontName и fontSize .

Тип: объект
По умолчанию: {color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
заголовок

Текст для отображения над диаграммой.

Тип: строка
По умолчанию: без названия
заголовокTextStyle

Объект, определяющий стиль текста заголовка. Объект имеет следующий формат:

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

color может быть любой цветовой строкой HTML, например: 'red' или '#00cc00' . Также см. fontName и fontSize .

Тип: объект
По умолчанию: {color: 'black', fontName: <global-font-name>, fontSize: <global-font-size>}
useWeightedAverageForAggregation

Использовать ли средневзвешенные значения для агрегирования.

Тип: логический
По умолчанию: ложь

Методы

Метод
draw(data, options)

Рисует диаграмму.

Тип возврата: нет
getEventsConfig() (for v50+)

Возвращает текущую конфигурацию взаимодействия. Это можно использовать для проверки параметра конфигурации eventsConfig

Тип возвращаемого значения: Объект
{ // An empty array (i.e. []) means the interaction is disabled.
  highlight: string[],
  unhighlight: string[],
  rollup: string[],
  drilldown: string[] }
getSelection()

Стандартная реализация getSelection() . Выбранные элементы являются узлами. Одновременно можно выбрать только один узел.

Тип возвращаемого значения: Массив элементов выбора.
setSelection()

Стандартная реализация setSelection() . Выбранные элементы являются узлами. Одновременно можно выбрать только один узел.

Тип возврата: нет
goUpAndDraw()

Поднимите дерево на один уровень вверх и перерисуйте его. Не выдает ошибку, если узел является корневым узлом. Это запускается автоматически, когда пользователь щелкает правой кнопкой мыши узел.

Тип возврата: нет
getMaxPossibleDepth()

Возвращает максимально возможную глубину текущего представления.

Тип возврата: число
clearChart()

Очищает диаграмму и освобождает все выделенные ей ресурсы.

Тип возврата: нет

События

Пожалуйста, обратитесь к eventsConfig для получения информации о настраиваемых триггерах событий.
Имя
onmouseover

Запускается, когда пользователь наводит указатель мыши на узел. Обработчику событий передается индекс строки соответствующей записи в таблице данных.

Свойства: строка
highlight (for v50+)

Запускается, когда пользователь выделяет узел. Триггер по умолчанию — наведение курсора мыши. Его можно настроить с помощью eventsConfig для v50+. Обработчику событий передается индекс строки соответствующей записи в таблице данных.

Свойства: строка
onmouseout

Вызывается, когда пользователь уводит указатель мыши за пределы узла. Обработчику событий передается индекс строки соответствующей записи в таблице данных.

Свойства: строка
unhighlight (for v50+)

Вызывается, когда пользователь снимает выделение с узла. Триггер по умолчанию — mouseout. Его можно настроить с помощью eventsConfig для v50+. Обработчику событий передается индекс строки соответствующей записи в таблице данных.

Свойства: строка
ready

Вызывается, когда диаграмма готова к вызову внешних методов. Если вы хотите взаимодействовать с диаграммой и вызывать методы после ее рисования, вам следует настроить прослушиватель этого события до вызова метода draw и вызывать их только после того, как событие было запущено.

Свойства: Нет
rollup

Запускается, когда пользователь возвращается вверх по дереву. Триггер по умолчанию — щелчок правой кнопкой мыши. Его можно настроить с помощью eventsConfig для v50+. Свойство row, передаваемое в обработчик событий, — это строка узла, от которого пользователь переходит, а не строка, к которой пользователь переходит.

Свойства: строка
select

Запускается, когда пользователь детализирует или сворачивает узел. Также запускается при вызове метода setSelection() или goUpAndDraw() . Чтобы узнать, какой узел был выбран, вызовите getSelection() .

Свойства: нет
drilldown (for v50+)

Запускается, когда пользователь перемещается глубже в дерево. Триггер по умолчанию — щелчок. Его можно настроить с помощью eventsConfig для v50+. Чтобы узнать, какой узел был выбран, вызовите getSelection() .

Свойства: нет

Политика данных

Весь код и данные обрабатываются и отображаются в браузере. Никакие данные не отправляются ни на один сервер.