当从我创建的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的示例来看,它是如此简单!
谢谢!
答案 0 :(得分:1)
首先,请注意linearRegression
指示符用于查找给定时间段内的单个值(点,而不是线)。
此演示说明了如何在Highchstock中获得回归线(它也将与以data.csv
传递的数据一起使用(尽管为了保持清晰度,我没有这样做)): http://jsfiddle.net/BlackLabel/w0ohb647/
Highstock提供了三个指标来帮助我们找到界线:linearRegressionSlope
,linearRegressionIntercept
和linearRegressionAngle
。如果我们将其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
,因此辅助序列(linearRegressionIntercept
,linearRegressionAngle
和redraw
)从未出现}}和false
方法。