「Highchartsを使用した環境データの表示」ですでにHighchartsによりチャートを表示しました。今回は再度Highchartsを使ってチャートを表示します。
Highchartsを使ったチャートのコードの作成
Highchartsを使ったチャートのコードを次に示します。
- 185行目でgetJSON関数を実行して、表示するデータを取得します。
- 168-183行目は、getJSON関数で渡すパラメータを作成します。
index.html
<!doctype html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>気象データ in 横浜</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="http://code.highcharts.com/highcharts.js"></script> <script src="http://code.highcharts.com/modules/exporting.js"></script> <script> $(function () { var name = "hoge"; var options = { chart: { renderTo: 'container', type: 'spline', zoomType: 'x' }, title: { text: '気象データ in 横浜' }, subtitle: { text: '提供: TomoSoft(https://tomosoft.jp/design/)' }, credits: { enabled: false }, xAxis: [{ title: { text: '時刻', }, categories: ['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'], crosshair: true }], yAxis: [{// Primary yAxis title: { text: '気温', style: { color: '#228B22', //ForestGreen } }, labels: { format: '{value}℃', style: { color: '#228B22', } }, ceiling: 35, floor: -10 }, {// Secondary yAxis gridLineWidth: 0, title: { text: '湿度', style: { color: '#4169E1', //RoyalBlue } }, labels: { format: '{value} %', style: { color: '#4169E1', } }, ceiling: 90, floor: 40, opposite: true }, {// Tertiary yAxis gridLineWidth: 0, title: { text: '気圧', style: { color: '#DAA520', // GoldenRod } }, labels: { format: '{value} hPa', style: { color: '#DAA520', } }, ceiling: 1030, floor: 990, opposite: true }], tooltip: { formatter: function () { var s = this.x; s += '<br/>' + '<span style="color:#228B22;">' + this.points[2].series.name + '</span>' + ': ' + this.points[2].y + '℃'; s += '<br/>' + '<span style="color:#4169E1;">' + this.points[1].series.name + '</span>' + ': ' + this.points[1].y + '%'; s += '<br/>' + '<span style="color:#DAA520;">' + this.points[0].series.name + '</span>' + ': ' + this.points[0].y + 'hPa'; return s; }, shared: true }, exporting: { buttons: { customButton: { text: '昨日', onclick: function () { alert('昨日'); } }, anotherButton: { text: '今日', onclick: function () { alert('今日'); } } } }, legend: { layout: 'vertical', align: 'left', x: 80, verticalAlign: 'top', y: 35, floating: true, backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF' }, series: [{ name: '気圧', type: 'column', yAxis: 2, color: '#DAA520', data: [1016, 1016, 1015.9, 1015.5, 996.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7, 1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 995.6, 1010.2, 1013.1, 1000.9, 1018.2, 1016.7], legendIndex: 2, marker: { enabled: false }, dashStyle: 'shortdot', tooltip: { valueSuffix: ' hPa' } }, { name: '湿度', type: 'spline', yAxis: 1, color: '#4169E1', data: [45.9, 71.5, 50.4, 50.2, 55.0, 60.0, 70.6, 60.5, 70.4, 63.1, 70.6, 54.4, 49.9, 71.5, 50.4, 50.2, 45.0, 50.0, 70.6, 60.5, 62.4, 50.1, 75.6, 54.4], legendIndex: 1, tooltip: { valueSuffix: ' %' } }, { name: '気温', type: 'spline', yAxis: 0, color: '#228B22', data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6, 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6], legendIndex: 0, tooltip: { valueSuffix: ' ℃' } }] }; // var yesterday = "2016/07/29"; console.log("start env!"); var date = new Date(); var year = date.getFullYear(); var month = (1 + date.getMonth()).toString(); month = month.length > 1 ? month : '0' + month; var day = date.getDate().toString(); day = day.length > 1 ? day : '0' + day; var yesterday = year + '/' + month + '/' + day; console.log("start env1! : " + yesterday); var date = new Date(); var year = date.getFullYear(); var month = (1 + date.getMonth()).toString(); month = month.length > 1 ? month : '0' + month; var day = date.getDate().toString(); day = day.length > 1 ? day : '0' + day; var yesterday = year + '/' + month + '/' + day; $.getJSON("res.php", {"yesterday_date": yesterday}, function (data) { //console.log("start env2! : " + data[0] + " " + data[1] + " " + data[2]); //console.log("start env2! : " + data); options.series[2].data = data[0]; options.series[1].data = data[1]; options.series[0].data = data[2]; var chart = new Highcharts.Chart(options); }); console.log("start env3! : "); }); </script> </head> <body> <ul id="container"></ul> </body> </html>
getJSON関数により呼び出されるファイル「res.php」を次に示します。getJSON関数から渡されたパラメータは使用していません。固定値を戻り値にしています。
res.php
<?php $userwork = array( array( 11.0, 10.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6, 7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6), array( 45.9, 71.5, 50.4, 50.2, 55.0, 60.0, 70.6, 60.5, 70.4, 63.1, 70.6, 54.4, 49.9, 71.5, 50.4, 50.2, 45.0, 50.0, 70.6, 60.5, 62.4, 50.1, 75.6, 54.4), array( 1016, 1016, 1015.9, 1015.5, 996.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7, 1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 995.6, 1010.2, 1013.1, 1000.9, 1018.2, 1016.7) ); header('Content-type: application/json; charset=UTF-8'); echo json_encode($userwork); ?>
Highchartsを使ったチャートのコードの実行
ブラウザからURL「http://localhost/highcharts/」を入力すると、次のチャートが表示されます。