skysilver

 
<<< Back

Мультисерийный кастомный график в модуле Charts

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

В продолжение статей о кастомных графиках в модуле Charts предлагаю варианты мультисерийных графиков.

Предыдущие статьи:

  • Кастомный график в модуле Charts (ссылка)
  • График с цветовой индикацией выхода величины за пределы (ссылка)

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

config.series = [{КОНФИГ_ГРАФИКА_1},{КОНФИГ_ГРАФИКА_2},{КОНФИГ_ГРАФИКА_3}];

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

config.series = [{},{},{}];

Если требуется выводить графики величин с разными единицами измерения и отображать в разных диапазонах, то определяется несколько осей ординат Y, а у каждой серии явным образом указывается, какую ось необходимо использовать при построении графика. Ниже пример опции config.series с указанием названий серий и привязки к осям ординат.

config.series = [{
   name: 'Температура',
   yAxis: 0
},{
   name: 'Влажность',
   yAxis: 1
},{
   name: 'Давление',
   yAxis: 2
}];

При этом опция config.yAxis, разумеется, должна описывать все вышеобозначенные оси ординат в нужном количестве.

config.yAxis = [{
   title: {text: 'Температура, С'}
},{
   title: {text: 'Влажность, %'}
},{
   title: {text: 'Давление, мм.рт.ст.'}
}];

Таким образом, используя опции config.series и config.yAxis и настраивая их содержимое в соответствии с API Highcharts, можно получить мультисерийные графики с требуемым стилем и внешним видом. Демо можно посмотреть здесь.

Рассмотрим пару примеров.

Простой график температуры в разных помещениях.

hc1

Все три величины одинаковые (температура в градусах цельсия), поэтому используется только одна ось Y.

На вкладке Данные добавляется три источника исторических данных.

hc1_1

Опция config.series:

config.series = [{
   name: 'Комната',
   tooltip: {
      valueSuffix: ' °C',
   },
   colors: '#2b908f',
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
},{
   name: 'Ванная',
   tooltip: {
      valueSuffix: ' °C',
   },
   colors: '#90ee7e',
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
},{
   name: 'Кухня',
   tooltip: {
      valueSuffix: ' °C',
   },
   colors: '#f45b5b',
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
}];

Опция config.yAxis:

config.yAxis = {
   title: {text: 'Температура, С'},
   tickPixelInterval: 30,
   min: 15,
   max: 30
};

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

Погодный (климатический) график температуры.

hc2

Выводим три величины - температура воздуха, относительная влажность и атмосферное давление. Все величины имеют разные единицы измерения, поэтому используется три оси Y.

На вкладке Данные добавляется три источника исторических данных. Проставлем при необходимости приоритеты, если порядок осей и серий в конфиге не совпадает с порядком источников данных в таблице.

hc2_1

Опция config.series:

config.series = [{
   name: 'Влажность',
   yAxis: 0,
   tooltip: {
      valueSuffix: ' %'
   },
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
},{
   name: 'Температура',
   yAxis: 1,
   tooltip: {
      valueSuffix: ' °C'
   },
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
},{
   name: 'Давление',
   yAxis: 2,
   tooltip: {
      valueSuffix: ' мм.рт.ст'
   },
   marker: {
      enabled: true,
      radius: 1,
   },
   states: {
      hover: {lineWidth: 3}
   }
}];

Опция config.yAxis:

config.yAxis = [{
   title: {
      text: 'Влажность, %',
      style: {
         color: Highcharts.getOptions().colors[0]
      }
   },
   labels: {
      style: {
         color: Highcharts.getOptions().colors[0]
      }
   },
   min: 0,
   max: 100,
   tickPositions: [0, 20, 40, 60, 80, 100]
},{
   title: {
      text: 'Температура, °C',
      style: {
         color: Highcharts.getOptions().colors[1]
      }
   },
   labels: {
      style: {
         color: Highcharts.getOptions().colors[1]
      }
   },
   gridLineWidth: 0
},{
   title: {
      text: 'Давление, мм.рт.ст.',
      style: {
         color: Highcharts.getOptions().colors[2]
      }
   },
   labels: {
      style: {
         color: Highcharts.getOptions().colors[2]
      }
   },
   gridLineWidth: 0,
   opposite: true
}];

Полный код настройки графика можно скачать по ссылке.

Проявив творческий подход, можно привести этот график к такому виду.

hc3

Discuss (5) (32)

See also:
2020-04-06 Получение данных о COVID с карты Яндекс
2019-07-12 MajorDoMo и Яндекс Алиса. Алиса, включи канал Карусель.
2019-06-20 MajorDoMo и Яндекс Алиса. Алиса, измени цвет бра на красный.
2019-06-18 MajorDoMo и Яндекс Алиса. Алиса, сделай ярче настольную лампу.
2019-06-17 MajorDoMo и Яндекс Алиса. Алиса, включи свет на кухне.
2019-06-10 MajorDoMo и Яндекс Алиса. Модуль Yandex Home.
2019-06-06 MajorDoMo и Яндекс Алиса. Объединение аккаунтов.
2019-06-05 MajorDoMo и Яндекс Алиса. Регистрация приватного навыка.
2019-06-03 Загрузка PHP-расширения PDO MySQL в Windows
2019-06-01 MajorDoMo и Яндекс Алиса. Публикация вебхуков.
2019-05-29 MajorDoMo и Яндекс Алиса. Общие сведения.
2019-05-22 Экспресс контроль состояния циклов в Linux
2019-05-08 Сценарий контроля состояния SSL сертификатов сайтов
2019-02-26 Экспорт графиков в PNG-файл в модуле Charts
2018-12-13 График с цветовой индикацией выхода величины за пределы
2018-11-12 Кастомный график в модуле Charts
2018-08-15 Кронштейн NB F120 (North Bayou)
2018-07-18 WiFi-информер на светодиодных матрицах MAX7219 и ESP8266. Часть 3.
2018-06-20 WiFi-информер на светодиодных матрицах MAX7219 и ESP8266. Часть 2.
2018-06-15 WiFi-информер на светодиодных матрицах MAX7219 и ESP8266. Часть 1.
2018-05-20 Кросс-компиляция ядра для Banana Pi M2U
2018-05-14 Ссылки на ресурсы по MajorDoMo
2018-03-02 Знакомство и тестирование Banana Pi M2U
2018-02-21 Распаковка Banana Pi M2U
2018-02-14 Одноплатный ПК для MajorDoMo
2018-08-14 Заметки по железу
2018-01-23 Мой взгляд на вопрос голосового управления в MajorDoMo
2018-01-17 Обзор цен на устройства Xiaomi
2017-12-24 Гирлянда на ESP8266 и WS2812
2017-12-20 Блог им. skysilver

Киров, Россия

На форуме: skysilver

Web-site URL:
http://connect.smartliving.ru/profile/461