如何将趋势线添加到highcharts

时间:2014-08-26 12:35:38

标签: javascript html css highcharts

这是高图表图代码。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">
$(function () {
        $('#container').highcharts({
            title: {
                text: 'RNA',
                x: -20 //center
            },
            subtitle: {
                text: 'Outage Reasons',
                x: -20
            },
            xAxis: {
                categories: ['18-Jul-14', '19-Jul-14', '20-Jul-14', '21-Jul-14', '22-Jul-14', '23-Jul-14',
                    '24-Jul-14', '25-Jul-14', '26-Jul-14', '27-Jul-14', '28-Jul-14', '29-Jul-14']
            },
            yAxis: {
                title: {
                    text: 'Outage'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                valueSuffix: ''
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            series: [{
                name: 'RNA - CP ( Radio Network Availability - Customer Perceived)',
                data: [99.75, 99.77, 99.78, 99.84, 99.82, 99.82, 99.76, 99.78, 99.8, 99.65, 99.94, 99.8]
            }],
            credits: {
                enabled: false
            }
        });
    });


        </script>
    </head>
    <body>
<script src="highcharts.js"></script>
<script src="exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

    </body>
</html>

我想为此图表添加趋势线,我在谷歌搜索并从此链接获取代码:https://github.com/virtualstaticvoid/highcharts_trendline 我添加了这样的趋势线代码。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

         <script type="text/javascript" src="regression.js"></script>

          <script type="text/javascript" src="http://code.highcharts.com/highcharts.js"></script>


        <script type="text/javascript">
$(function () {
        $('#container').highcharts({
            title: {
                text: 'RNA',
                x: -20 //center
            },
            subtitle: {
                text: 'Outage Reasons',
                x: -20
            },
            xAxis: {
                categories: ['18-Jul-14', '19-Jul-14', '20-Jul-14', '21-Jul-14', '22-Jul-14', '23-Jul-14',
                    '24-Jul-14', '25-Jul-14', '26-Jul-14', '27-Jul-14', '28-Jul-14', '29-Jul-14']
            },
            yAxis: {
                title: {
                    text: 'Outage'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                valueSuffix: ''
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            series: [{
                name: 'RNA - CP ( Radio Network Availability - Customer Perceived)',
                data: [99.75, 99.77, 99.78, 99.84, 99.82, 99.82, 99.76, 99.78, 99.8, 99.65, 99.94, 99.8]
            }],
            credits: {
                enabled: false
            }
        });
    });


     var sourceData = [
          [18-Jul-14, 99.75], [19-Jul-14, 99.77],
          [20-Jul-14, 99.78], [21-Jul-14, 99.84],
          [22-Jul-14, 99.82], [23-Jul-14, 99.82],
          [24-Jul-14, 99.76], [25-Jul-14, 99.78],
          [26-Jul-14, 99.8], [27-Jul-14, 99.65],
          [28-Jul-14, 99.94], [29-Jul-14, 99.8]
      ];

      var chart_linear = new highcharts.Chart({
          chart: {
            renderTo: 'container'
          },
          plotOptions: {
            series: {
              enableMouseTracking: false
            }
          },
          series: [{
            type: 'scatter',
            data: sourceData
          },
          {
            type: 'line',
            marker: { enabled: false },
            /* function returns data for trend-line */
            data: (function() {
              return fitData(sourceData).data;
            })()
          }]
      });


        </script>
    </head>
    <body>

<script src="exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

    </body>
</html>

根据x轴和y轴值但在x轴值上的趋势线是日期明确的,y轴值是数字,请找到第一个代码的屏幕截图: enter image description here

这是趋势线快照。请找到。 enter image description here

请分享我想在同一页面中添加两个图表的任何一个代码,我试过但两个图表的x轴和y轴值不同。

感谢。

2 个答案:

答案 0 :(得分:5)

无数问题。

1。)你没有真正将回归代码整合到你的情节中,你只是从示例中剪切/粘贴并且过度绘制你的情节。您需要将回归线作为第二个系列添加到您的图中:

        series: [{
            name: 'RNA - CP ( Radio Network Availability - Customer Perceived)',
            data: sourceData
        },{
            type: 'line',
            marker: { enabled: false },
            /* function returns data for trend-line */
            data: (function() {
              return fitData(sourceData).data;
            })()
        }]

2。)这是无效的javascript:

 var sourceData = [
      [18-Jul-14, 99.75], [19-Jul-14, 99.77],
      [20-Jul-14, 99.78], [21-Jul-14, 99.84],
      [22-Jul-14, 99.82], [23-Jul-14, 99.82],
      [24-Jul-14, 99.76], [25-Jul-14, 99.78],
      [26-Jul-14, 99.8], [27-Jul-14, 99.65],
      [28-Jul-14, 99.94], [29-Jul-14, 99.8]
  ];

这些是字符串而且没有引用它们。无论如何,字符串不会为了回归而削减它,它需要数字。由于您的日期确实是类别,只需使用:

 var sourceData = [
      [0, 99.75], [1, 99.77],
      [2, 99.78], [3, 99.84],
      [4, 99.82], [5, 99.82],
      [6, 99.76], [7, 99.78],
      [8, 99.8], [9, 99.65],
      [10, 99.94], [11, 99.8]
  ];

3。)你的系列名称对于右侧传奇来说太长了(它使情节变得模糊)。在我的例子中,我把它移到了底部。

这是一个example将所有这些放在一起。

答案 1 :(得分:0)

您可以使用我相信会做您想做的Plugin

$(function() {

    $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function(data) {
        $('#container').highcharts('StockChart', {

            title : {
                text : 'AAPL Stock Price'
            },

            subtitle: {
                text: 'From may 15, 2006 to May 10, 2013'
            },
            
            xAxis: {
                ordinal: false
            },

            yAxis: {
                title : {
                    text : 'Price'
                }
            },

            legend: {
                enabled: true,
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            
            series : [{
                name: 'Stock Price',
                type : 'line',
                id: 'primary',
                data : data
            }, {
                name: 'Linear Trendline',
                linkedTo: 'primary',
                showInLegend: true,
                enableMouseTracking: false,
                type: 'trendline',
                algorithm: 'linear'
            }]
        });
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://rawgithub.com/laff/technical-indicators/master/technical-indicators.src.js"></script>
<div id="container" style="min-width: 500x; height: 400px; margin: 0 auto"></div>

来源: http://www.highcharts.com/plugin-registry/single/16/technical-indicators