Javascript 使用mx+在海图中绘制回归线;B
我试图根据Javascript 使用mx+在海图中绘制回归线;B,javascript,highcharts,statistics,linear-regression,Javascript,Highcharts,Statistics,Linear Regression,我试图根据mx+b(斜率+y-截距)公式,在高图中绘制一条线性回归线,用以生成回归公式 我遇到的问题是,Highcharts似乎需要[[x1,y1],[x2,y2]]格式的回归线,但我不一定能从斜率和y截距获得起点和终点 所以: 可以根据坡度在海图中画一条线吗?或者有一个JS回归库可以输出一个基于如下数据数组的[[x1,y1],[x2,y2]]格式的行吗 我现在的工作是: data = [[11.6,14.7],[12.2,15.9],[10.7,14.8],[14,11.7],[12.5,13
mx+b
(斜率+y-截距)公式,在高图中绘制一条线性回归线,用以生成回归公式
我遇到的问题是,Highcharts似乎需要[[x1,y1],[x2,y2]]
格式的回归线,但我不一定能从斜率和y截距获得起点和终点
所以:
可以根据坡度在海图中画一条线吗?或者有一个JS回归库可以输出一个基于如下数据数组的[[x1,y1],[x2,y2]]
格式的行吗
我现在的工作是:
data = [[11.6,14.7],[12.2,15.9],[10.7,14.8],[14,11.7],[12.5,13.2],[10,11.3],[10.1,11],[13.5,19.1]];
slope = regression('linear', data); // result: slope.equation = [slope, y-intercept]
$('#scatter').highcharts({
chart: {
type: 'scatter',
zoomType: 'xy'
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x} cm, {point.y} kg'
}
}
},
series: [
{
type: 'line',
name: 'Regression Line',
data: [[0, 0], [5, 4.51]], // You see the problem here: I've got mx + b and this wants x1 y1 x2 y2
marker: {
enabled: false
},
states: {
hover: {
lineWidth: 0
}
},
enableMouseTracking: false
},
{
name: 'Water Temperature vs. Air Temperature',
color: 'rgba(119, 152, 191, .5)',
data: data
}]
});
data=[11.6,14.7]、[12.2,15.9]、[10.7,14.8]、[14,11.7]、[12.5,13.2]、[10,11.3]、[10.1,11]、[13.5,19.1];
斜率=回归('线性',数据);//结果:斜率。方程=[斜率,y截距]
$(“#散点”)。高图({
图表:{
键入:“散布”,
zoomType:'xy'
},
打印选项:{
散布:{
标记:{
半径:5,
国家:{
悬停:{
启用:对,
线条颜色:“rgb(100100)”
}
}
},
国家:{
悬停:{
标记:{
已启用:false
}
}
},
工具提示:{
headerFormat:“{series.name}
”,
pointFormat:“{point.x}cm,{point.y}kg”
}
}
},
系列:[
{
键入:“行”,
名称:'回归线',
数据:[[0,0],[5,4.51]],//您可以看到这里的问题:我有mx+b,这需要x1 y1 x2 y2
标记:{
已启用:false
},
国家:{
悬停:{
线宽:0
}
},
enableMouseTracking:false
},
{
名称:“水温与空气温度”,
颜色:“rgba(119152191,.5)”,
数据:数据
}]
});
这是一个很好的问题。我是这样做的:
var data = [[11.6,14.7],[12.2,15.9],[10.7,14.8],[14,11.7],[12.5,13.2],[10,11.3],[10.1,11],[13.5,19.1]];
var ymxb = regression('linear', data);
// get the slope and x intercept from the equation
var m = ymxb.equation[0], b = ymxb.equation[1];
// create array of x values
var xs = [];
data.forEach(function(d){
xs.push(d[0]);
});
// get the max and min values of x, and calculate
// the corresponding y value using that x, m, and b
var x0 = Math.min.apply(null, xs),
y0 = m*x0 + b;
var xf = Math.max.apply(null, xs),
yf = m*xf + b;
...
// that gives you your two coordinates
series: [
{
type: 'line',
name: 'Regression Line',
data: [[x0, y0], [xf, yf]],
...
结果: