javascript - 使用 HighChart 的简单折线图

标签 javascript highcharts

我正在尝试使用 HighChart 生成一个简单的折线图。下面给出了源代码。挑战在于我在屏幕上显示了 X 轴和 Y 轴,但图表本身丢失了。当我在屏幕上移动光标时,我可以看到屏幕上显示的 X 和 Y 值。我尝试调试该程序,但无法找到解决方案。有人可以指导我吗?

问候

萨钦

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <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>
        
        <!--[if IE]>
            <script type="text/javascript" src="../js/excanvas.compiled.js"></script>
        <![endif]-->
        <!-- 2. Add the JavaScript to initialize the chart on document ready -->
        <script type="text/javascript">
        $(document).ready(function() {
            var options = {
                chart: {
                    renderTo: 'container',
                    type: 'line'
                },
                title: {
                    text: 'Pollution Level'
                },
                xAxis: {
                    categories: [''],
                        title: {
                            text: 'Date'
                        }
                },
                yAxis: {
                    title: {
                        text: 'Pollution %'
                    }
                 },
                series: []
            };
            

            $.get('data/graphs/pollution.csv', function(data) {
            window.alert(data);    
            // Split the lines
            var lines = data.split('\n');
            window.alert(lines);
            lines = lines.map(function(line) {
                var data = line.split(',');
                data[1] = parseFloat(data[1]);
                return data;
            });

            window.alert(lines);
            var series = {
                data: lines
            };
            options.series.push(series);

            var chart = new Highcharts.Chart(options);
                    });
    });
</script>

    </head>
    <body >
        <div id="container" style="width: 610px; height: 610px; margin: 0 auto"></div>
            </body>
</html>

2016 年 3 月 1 日更新

我已将程序修改如下。我仍然无法获得折线图。有趣的是,如果我将图表类型从“线”更改为“柱”,我可以看到图表。不确定问题所在。请指教。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script type="text/javascript" src="js/highcharts.js"></script>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

        
        <!--[if IE]>
            <script type="text/javascript" src="../js/excanvas.compiled.js"></script>
        <![endif]-->
        <!-- 2. Add the JavaScript to initialize the chart on document ready -->
        <script type="text/javascript">
        $(document).ready(function() {
            var options = {
                chart: {
                    renderTo: 'container',
                    defaultSeriesType: 'line'
                },
                title: {
                    text: 'Pollution Level'
                },
                xAxis: {
                    categories: [''],
                        title: {
                            text: 'Date'
                        }
                },
                yAxis: {
                    title: {
                        text: 'Pollution %'
                    }
                 },
               series: [ {
                    plotLines: [{
                            color: '#000000'
                        }],
                       data: []
                    }]
            };
            

            $.get('data/graphs/pollution.csv', function(data) {
            window.alert(data);    
            // Split the lines
            var lines = data.split('\n');
            window.alert(lines);
            var series = {
                      data: [],
                      name: 'serie1'  
            };
            lines = lines.map(function(line) {
                var data = line.split(',');
                if (data[0] != "DATE"){
                    options.xAxis.categories.push(data[0]);
                    data1 = parseFloat(data[1]);
                    series.data.push(parseFloat(data[1]));
                    return data;
                    }
                });
                options.series.push(series);
                var chart = new Highcharts.Chart(options);
            });

    });
</script>

    </head>
    <body >
        <div id="container" style="width: 610px; height: 610px; margin: 0 auto"></div>
        <?php
        ?>
    </body>
</html>

最佳答案

确保您获取的是有效值而不是字符串: 请检查此部分:

  lines = lines.map(function(line) {
                var data = line.split(',');
                data[1] = parseFloat(data[1]);
                return data;
            });

问:您能否分享您的 CSV (pollution.csv)?

感谢您提供的数据:请检查以下example 解析部分是:

  for (i = 0; i < lines.length; i++) {
    var items = lines[i].split(',');
    if (i == 0) {
      ctg[0] = items[0];
      ctg[1] = items[1];
    } else {
      dataYAxis.push([(new Date(items[0])).getTime(), parseFloat(items[1])]);
    }
  }

如您所见,我从数据中分离出了标题(DATE、LVL),下一步是将数据保存在 dataYAxis 数组中:首先是日期,其次是数据。我在 xAxis 中使用“datetime”来显示 xAxis 标签中的日期。

关于javascript - 使用 HighChart 的简单折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702508/

相关文章:

来自 div 值的 Javascript 自动完成源动态不起作用

javascript - 解析字符串以创建子字符串数组

javascript - Highcharts:使用 CSV 的热图

javascript - HIghcharts & Bootstrap : Chart on Tab 2 is not appearing. 虽然第一个图表工作正常

highcharts - 如何删除 HighCharts 条形图中条形之间的空格?

javascript - 运行一次函数时为 NaN

javascript - 是否可以使用下划线按多个值过滤数组值?

javascript - 无法在 JavaScript 中访问 JSON 数组的值

javascript - 在 Highcharts 折线图中传递 null

charts - 在同一页面上显示高 map 和 Highcharts 时遇到问题?