2013年2月6日水曜日

[Highcharts]Pie + csv

sample09.html
<html>
  <head>
    <title>Highcharts test 6 (Pie + csv)</title>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript" src="js/highcharts.js"></script>
    <script type="text/javascript" src="js/modules/exporting.js"></script>
    <script type="text/javascript" src="sample09.js"></script>
  </head>
  <body>
Pie + csv
    <div id="container0" style="height: 400px; width: 800px; margin: 0;"></div>
  </body>
</html>
sample09.js
$(document).ready(function() {
    $.get('sample09.csv', function(data) {
        var options = {
            chart: {
                renderTo: 'container0',
            },
            title: {
                text: 'Pie chart'
            },
            plotOptions: {
                pie: {
                    // データをクリックすると円グラフから少し離れて表示される
                    allowPointSelect: true,
                    // データ上にマウスを持っていった時に指マークで表示される
                    cursor: 'pointer',
                    // 各データを値付きで表示する
                    dataLabels: {
                        enabled: true,
                        formatter: function() {
                            // 小数点第 2 位まで表示する
                            return this.point.name + ': ' + (Math.round(this.percentage * 100) / 100) + ' %';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                data: []
            }]
        }

        // Split the lines
        var lines = data.split('\n');

        // Iterate over the lins and add categories or series
        $.each(lines, function(lineNo, line) {
            if (line == '') {
                // No operation for No data line
                return true;
            }

            var items = line.split(',');

            switch (lineNo) {
            case 0:
                //header line contains categories
                $.each(items, function(itemNo, item) {
                    var d = [];
                    d.push(item);
                    options.series[0].data.push(d);
                });
                break;
            case 1:
            default:
                // the rest of the lines contain data with their name in the first position
                // 全体数を算出する
                var total = 0;
                $.each(items, function(itemNo, item) {
                    total += parseFloat(item);
                });

                var i = 0;
                $.each(items, function(itemNo, item) {
                    rate = (item / total) * 100;
                    options.series[0].data[i].push(parseFloat(rate));
                    i++;
                });
                break;
            }
        });

        // Create the chart
        var chart = new Highcharts.Chart(options)
    });
});
sample09.csv
Tanaka,Suzuki,Yamada
10,15,8
出力結果
sample09 (fc2 に置いてあるテストページに飛びます)

0 件のコメント:

コメントを投稿