JavaScriptでCanvasにグラフを描くHightCharts を使って、スライダーで見る角度を変えてリアルタイムに動かす
HightCharts http://www.highcharts.com/demo/3d-column-interactive
ライブラリーを書いた人が凄すぎる。
でもね、3次元でソートして奥から描いてくれたら最高!
border と 透明度を設定できたら更に最高!
次は、Ajaxを使ってPHPを呼び出し、そこからMySQLの値を返して、グラフに反映させようっと!
<!DOCTYPE HTML> <html> <meta charset="utf-8"> <title>あいうえお</title> <style> h1 { display : none; } #container, #chart_env { min-width: 310px; max-width: 800px; margin: 20px auto; } #container { height: 500px; } fieldset { border-radius: 8px; } fieldset p { clear: both; overflow: hidden; } fieldset p label { float: left; display : block; width : 150px; text-align : right; } fieldset p > span { float: left; display : block; } fieldset input[type="range"] { width : 500px; } </style> <body> <h1>abcdefg hijklmn opqrstuvwxy z~!</h1> <div id="container"></div> <form id="chart_env"> <fieldset> <legend>グラフを見る角度を指定します</legend> <p> <label>Alpha angle</label> <span> : <input name="alpha" type="range" min="-30" max="30" value="0"> <span class="value"> </span> </span> <p> <label>Beta angle</label> <span> : <input name="beta" type="range" min="-30" max="30" value="0"> <span class="value"> </span> </span> <p> <label>ViewDistance</label> <span> : <input name="viewDistance" type="range" min="1" max="20" value="5"> <span class="value"> </span> </span> </fieldset> </form> <script src="jquery_mini.js"></script> <script src="highcharts.js"></script> <script src="highcharts-3d.js"></script> <script src="modules/exporting.js"></script> <script> var env = document.forms['chart_env'].elements; env['alpha'].nextElementSibling.textContent = env['alpha'].value; env['beta'].nextElementSibling.textContent = env['beta'].value; env['viewDistance'].nextElementSibling.textContent = env['viewDistance'].value; var chart = new Highcharts.Chart({ chart: { renderTo: 'container', type: 'column', margin: 70, options3d: { enabled: true, alpha: env['alpha'].value, beta: env['beta'].value, depth: 80, viewDistance: env['viewDistance'].value } }, title: { text: document.title }, subtitle: { text: '[ ' + document.querySelector ('h1').textContent + ' ]'}, plotOptions: { column: { depth: 20 } }, series: [ { name: 'A', data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]} ] }); var changeHandlerByForm = (function (chart) { return function (event) { var e = event.target; chart.options.chart.options3d[e.name] = parseFloat (e.value); chart.redraw(false); e.nextElementSibling.textContent = e.value; }; }) (chart); document.querySelector ('#chart_env').addEventListener ( 'input', changeHandlerByForm, false); </script>