Jquery Highcharts. Интерактивные графики.
27.12.2019 Иногда необходимо отображать информацию хранящуюся в базе данных с помощью различного рода графиков.
В данной статье рассмотрим три способа графического отображения информации. Подопытным будет компонент Jquery Highcharts.
Очень приятная в использовании библиотека. В первую очередь, для отображения графических элементов необходимо подключить к странице собственно сам Jquery, — этот момент пропускаю, поскольку раз уж Вы здесь, — значит умеете.
И туда же , в раздел страницы, нужно подключить скрипты-обработчики Jquery Highcharts.
1. Круговая диаграмма — круг разделенный на сектора в зависимости от значений.
Это наиболее простая диаграмма Highcharts. В приведенном ниже коде значения выводимые на график заданы принудительно, поскольку не вижу необходимости показывать здесь запросы к БД.
В реальной системе я использую данные полученные запросом.
Для использования такой диаграммы необходимо подключить в раздел следующий скрипт, содержащий функцию отрисовки круговой диаграммы.
<script type="text/javascript"><br /> $(function () {<br /> $('#container3').highcharts({<br /> chart: {<br /> type: 'pie',<br /> options3d: {<br /> enabled: true,<br /> alpha: 45,<br /> beta: 0<br /> }<br /> },<br /> title: {<br /> text: 'Распределение рельсов по группам годности'<br /> },</p> <p> plotOptions: {<br /> pie: {<br /> allowPointSelect: true,<br /> cursor: 'pointer',<br /> depth: 35,<br /> dataLabels: {<br /> enabled: true,<br /> format: '{point.name}'<br /> },<br /> colors: ['#058DC7', '#24CBE5', '#64E572', '#FF9655', '#FFF263']<br /> }<br /> },<br /> series: [{<br /> type: 'pie',<br /> name: 'Количество (шт.):',<br /> data: [<br /> ['Новые рельсы: 200 шт.',200],<br /> {<br /> name: 'Рельсы I категории: 20 шт.',<br /> y: 20,<br /> sliced: true,<br /> selected: true<br /> },<br /> ['Рельсы II категории: 12 шт.',12],<br /> ['Рельсы III категории: 14 шт.',14],<br /> ['Рельсы IV категории: 5 шт.',5]<br /> ]<br /> }]<br /> });<br /> });<br /> </script>
Как видите — все не так уж сложно в этой функции.
2. Кольцевая диаграмма — кольцо разделенное на сектора в зависимости от значений.
Немного другая структура формирования представления.
Не разделяется на секции при клике по сектору, но в целом тоже удобна и кода чуть меньше. Так же необходимо подключение в заголовке страницы. Подключаемая функция:
<script><br /> $(function () {<br /> $('#container2').highcharts({<br /> chart: {<br /> type: 'pie',<br /> options3d: {<br /> enabled: true,<br /> alpha: 45<br /> }<br /> },<br /> title: {<br /> text: 'Распределение рельсов по типу размещения'<br /> },<br /> subtitle: {<br /> text: 'тут какой-то дополнительный текст'<br /> },<br /> plotOptions: {<br /> pie: {<br /> innerSize: 100,<br /> depth: 45<br /> }<br /> },<br /> series: [{<br /> name: 'Количество (шт.)',<br /> data: [<br /> ['На базах ПЧ: 100 шт.' , 100],<br /> ['На складах ПД: 50 шт.', 50],<br /> ['Уложены в ПКЗ: 40 шт.', 40],<br /> ['Уложены в путь: 15241 шт.',1541],<br /> ['Изъяты из пути: 257 шт.', 257],<br /> ['Забракованы: 102 шт.', 102]<br /> ]<br /> }]<br /> });<br /> });<br /> </script>
3. Ну и третий вариант — линейная диаграмма, которая в зависимости от настроек может быть как вертикальной, так и горизонтальной.
В данном случае структура чуть-чуть сложнее, но интуитивно понятна. Содержит линейное формирование графиков (бары) и легенду. Полностью кликабельна, и интерактивна.
<script><br /> $(function () {<br /> $('#container').highcharts({<br /> chart: {<br /> type: 'bar'<br /> },<br /> title: {<br /> text: 'Детализация распределения рельсов по предприятиям'<br /> },<br /> subtitle: {<br /> text: null<br /> },<br /> xAxis: {<br /> categories: ['ПЧ-1','ПЧ-2', 'ПЧ-3', 'ПЧ-4', 'ПЧ-5', 'ПЧ-6'],<br /> title: {<br /> text: null<br /> }<br /> },<br /> yAxis: {<br /> min: 0,<br /> title: {<br /> text: null,<br /> align: null<br /> },<br /> labels: {<br /> overflow: 'justify'<br /> }<br /> },<br /> tooltip: {<br /> valueSuffix: ' шт.'<br /> },<br /> plotOptions: {<br /> bar: {<br /> dataLabels: {<br /> enabled: true<br /> }<br /> },<br /> series: {<br /> groupPadding: 0<br /> }<br /> },<br /> legend: {<br /> layout: 'vertical',<br /> align: 'right',<br /> verticalAlign: 'top',<br /> x: 0,<br /> y: 100,<br /> floating: true,<br /> borderWidth: 1,<br /> backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),<br /> shadow: true<br /> },<br /> credits: {<br /> enabled: false<br /> },<br /> series: [{<br /> name: 'На базе ПЧ',<br /> data: [107, 31, 135, 203, 2,40]<br /> }, {<br /> name: 'На базе ПД',<br /> data: [133, 156, 247, 308, 6,90]<br /> }, {<br /> name: 'Размещены в ПКЗ',<br /> data: [273, 214, 204, 132, 34,100]<br /> }, {<br /> name: 'Уложены в путь',<br /> data: [97, 14, 40, 72, 34,130]<br /> }, {<br /> name: 'Изъяты из пути',<br /> data: [273, 114, 54, 202, 304,10]<br /> }, {<br /> name: 'Забракованы',<br /> data: [152, 114, 144, 232, 54,87]<br /> }]<br /> });</p> <p>});<br /> </script>
Мне не удалось найти в сети простого описания этих компонентов, поэтому решил поделиться с Вами этой информацией. Но следует сказать, что подключения этих скриптов в хедер страницы не достаточно, как Вы понимаете, для того чтобы графики появились на странице сайта. Теперь их нужно инициализировать. Jquery к странице уже подсключили (см. начало), у меня это старенький jquery.min-1.8.2.js. А вот ваша web-страница еще не знает что с этим делать. Для этого в тело поместим следующий код:
<body onload=""> <script src="js/highcharts.js"></script> <script src="js/highcharts-3d.js"></script> <div id="container3" style="height: 395px"></div> <div id="container2" style="height: 420px"></div> <div id="container" style="min-width: 310px; max-width: 800px; height: 1000; margin: 0 auto"></div> </body>
Вот здесь и появляются наши замечательные элементы с ID = container* , где звездочка это цифра ранее уже объявленная.
Диаграммы будут загружаться автоматически при открытии страницы.
Не стоит упускать из вида, что в тело страницы подключены скрипты плагина.
Удачных реализаций.
PS: с Вас LIKE кнопкой соцсети справа от записи 🙂
К сожалению пока еще не все глюки Syntax Highlighter побеждены 🙂
html теги иногда вставляются там где их не должно быть ..