我搜索了一些关于构建线性回归的帮助,并在这里找到了一些例子:
非线性回归函数
以及一些应该覆盖它的js库,但不幸的是我无法使它们正常工作:
simple-statistics.js和这一个:regression.js
随着regression.js我能够获得该行的m和b值,所以我可以y = m*x + b用来绘制我的图形的线性回归之后的行,但是不能将这些值应用到行生成器,我尝试的代码是下列:
d3.csv("typeStatsTom.csv", function (error, dataset) {
//Here I plot other stuff, setup the x & y scale correctly etc.
//Then to plot the line:
var data = [x.domain(), y.domain()];
var result = regression('linear', data);
console.log(result)
console.log(result.equation[0]);
var linereg = d3.svg.line()
.x(function (d) { return x(d.Ascendenti); })
.y(function (d) { return y((result.equation[0] * d.Ascendenti) + result.equation[1]); });
var reglinepath = svg.append("path")
.attr("class", "line") …Run Code Online (Sandbox Code Playgroud) 我在图表中用点绘制了几条线,看起来像下面张贴的图像中的点:比如说我有点A和B的坐标,我用它来设置线.我想做的是让线从x = 0到x = 100,并添加两个缺失的"x"块.
我正在使用d3.svg.line()设置.x和.y访问器功能,然后设置绘制线的路径.是否有一个函数可以添加到我想要获取的行或路径生成器中?任何提示都表示赞赏,谢谢!
我正在构建一个交互式图形,因为轴的值有两个标题值.如果我可以从下拉菜单或类似的东西中选择轴值,那将会更好.我不知道的是,是否可以访问我的csv的标头值,如果它们是数组的一部分,那么我可以创建一个下拉菜单进行选择.给定一个具有许多头值的.csv,并且它们都是字符串,是否可以通过使用来实现这一点d3.csv.formatRows(rows)?我尝试在回调函数中使用它:
var header = d3.csv("MyCsvFile.csv").formatRows(0);
console.log(header);
Run Code Online (Sandbox Code Playgroud)
但没有奏效.我甚至不确定我是否正在使用正确的功能,或者是否有功能这样做!任何帮助表示赞赏!谢谢!
对于要与d3.js关联的图形,我需要设置轴的比例。
图的数据存储在Json文件中,其结构如下:
[{
"id" : "AustraliaNewZealand" ,
"year" : [1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
"value":[477790,485825,487296,488885,502585,511718,526594,538967,550556,563572,577171,579126,591635,599216,604267,608954,615853,623685,618961,614920]
},
{
"id":"CentralEurope",
"year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
"value":[1548736,1334452,1313088,1283248,1314709,1360546,1343907,1285511,1237278,1251872,1244069,1233778,1284639,1297510,1317861,1359787,1396681,1361445,1278731,1343044]
},
{
"id":"EasternEurope",
"year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
"value":[4418516,3530464,3287987,2925644,2775181,2672238,2540975,2495036,2513372,2515375,2540796,2544848,2598148,2637682,2622241,2709974,2714204,2740248,2565213,2680226]
},
{
"id":"NorthAmerica",
"year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
"value":[6750754,6821412,6948829,7059001,7166869,7386971,7460485,7509719,7573562,7790060,7675762,7710685,7769154,7896824,7918461,7841686,7966277,7751508,7277713,7493948]
},
{
"id":"WesternEurope",
"year":[1990,1992,1994,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010],
"value":[4365949,4290345,4222425,4221029,4264725,4353056,4290057,4310736,4251628,4260565,4306230,4278128,4333237,4337031,4305560,4267515,4209481,4125479,3841580,3924831]
}]
Run Code Online (Sandbox Code Playgroud)
我想做的是在嵌套的各种数组之间进行迭代,以获取最小值和最大值的年份和值,但是我不知道如何获取这些值。我设法使用以下方法获取单个数组的值:
var xScale = d3 .time.scale()
.domain((d3.extent(dataset[0].year)))
.range([margin*2, (width - margin)]);
var yScale = d3 .scale.linear()
.domain([0, d3.max(dataset[0].value)])
.range([(height - margin), margin]);
Run Code Online (Sandbox Code Playgroud)
_dataset_回调函数的标识符在哪里,但是我想要获得的是获取所有数组之间的最小值和最大值(例如,最小值在array3中,最大值在数组1中)。我猜我应该使用for循环,但是我不知道应该把它放在哪里以及如何设置它以便在所有数组中查找。