向从CSV

时间:2019-06-05 14:33:32

标签: highcharts

当从我创建的CSV文件中获取数据时,我有一个多系列的Highcharts图表工作正常。我正在尝试使用highcharts-regression插件为其添加(黄土)回归曲线,但是只是在图表中根本不显示默认回归结果的情况下启用它。该应用程序位于http://bmcnoldy.rsmas.miami.edu/vk/

首先,在我的HTML中调用该插件的正确JS文件:https://rawgithub.com/phpepe/highcharts-regression/master/highcharts-regression.js

highcharts-regression的示例均未使用从内置CSV导入中导入的多个系列。

图表制作的胆量(如果regression:false,则图表会工作并显示出来;如果regression:true,则会破坏图表)

$.get('chart.csv', function(csv) {
   $('#container').highcharts({
    data: {
      csv: csv
    },
    series: [{
      (basic series options that work),
      regression: true,
    },{
      (basic series options that work),
      regression: true,
    },{
    ...
    }]
  });
});

这是我的五系列CSV文件的摘录,以供参考:

Date,Record High,Average High,Daily Average,Average Low,Record Low
"01-Jan-2000",80.2000,75.0000,72.0000,68.2000,45.5000
"02-Jan-2000",79.7000,75.0000,72.1000,68.3000,49.1000
"03-Jan-2000",79.2000,73.7000,70.0000,65.6000,46.4000
"04-Jan-2000",79.0000,72.0000,67.8000,63.7000,43.7000
"05-Jan-2000",80.2000,71.8000,67.4000,62.5000,44.2000
"06-Jan-2000",78.3000,73.0000,68.7000,63.5000,41.0000
"07-Jan-2000",78.3000,71.9000,67.5000,62.3000,45.5000

在每个系列配置中,我尝试添加     data: [], 只是数据对象存在...没关系。但是,有没有一种方法可以将数据设置为csv对象中的适当列,例如     data: [[csv[0]],[csv[1]]], 或类似的东西?那有关系吗?

我只想向这五个系列的每一个添加一条Loess回归曲线,从https://www.highcharts.com/products/plugin-registry/single/22/Highcharts%20regression的示例来看,它是如此简单!

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,请注意linearRegression指示符用于查找给定时间段内的单个值(点,而不是线)。

演示说明了如何在Highchstock中获得回归线(它也将与以data.csv传递的数据一起使用(尽管为了保持清晰度,我没有这样做)): http://jsfiddle.net/BlackLabel/w0ohb647/

Highstock提供了三个指标来帮助我们找到界线:linearRegressionSlopelinearRegressionInterceptlinearRegressionAngle。如果我们将其params.period设置为与数据长度相同,则这些指标系列中的每个指标将只有一个点。事实证明,我们可以使用这些点的y值(坡度,角度,截距)来找到所需的直线方程:y = slope * x + intercept

    this.addSeries({
      type: 'linearRegressionSlope',
      linkedTo: 'recordHigh'
    }, false);

    this.addSeries({
      type: 'linearRegressionIntercept',
      linkedTo: 'recordHigh'
    }, false);

    this.addSeries({
      type: 'linearRegressionAngle',
      linkedTo: 'recordHigh'
    }, false);

Highstock没有提供用于表示无限直线的任何结构,因此我们必须将其模拟为线段:

data: [regressionLineStart, regressionLineEnd]

您可能会发现奇怪的参数是interceptOffset。由于我们的回归线与数学y轴(y = 0)相交的位置发生在1970年1月1日(时间戳= 0),因此我们必须“假装”数学y轴始于{{1} }(出于我的解决方法目的)。

请注意,由于在{{1}中将y = Date.UTC(2018)参数设置为linearRegressionSlope,因此辅助序列(linearRegressionInterceptlinearRegressionAngleredraw)从未出现}}和false方法。