Javascript 如何使用具有多列的csv文件在D3.js中设置yAxis的比例

Javascript 如何使用具有多列的csv文件在D3.js中设置yAxis的比例,javascript,d3.js,Javascript,D3.js,我最近一直在玩D3.js,并试图用它制作一个小型地图应用程序。基本上,该应用程序将显示一张世界地图,当鼠标悬停在一个国家上时,下面将绘制一张历年碳排放的折线图 geojson文件和csv文件是分开的,这意味着我必须调用一个函数来搜索csv文件中的数据,同时触发mouseover事件,这并不难 但问题是当我试图画折线图时。我无法使用y.domain([0,d3.max(数据,函数(d){return d.fookey;})]),因为我的数据如下所示: {1990:“4768137.761”,199

我最近一直在玩D3.js,并试图用它制作一个小型地图应用程序。基本上,该应用程序将显示一张世界地图,当鼠标悬停在一个国家上时,下面将绘制一张历年碳排放的折线图

geojson文件和csv文件是分开的,这意味着我必须调用一个函数来搜索csv文件中的数据,同时触发mouseover事件,这并不难

但问题是当我试图画折线图时。我无法使用
y.domain([0,d3.max(数据,函数(d){return d.fookey;})])
,因为我的数据如下所示:

{1990:“4768137.761”,1991:“4826703.418”,1992:“4922195.765”,1993:“5029767.21”,1994:“5121559.554”,1995:“5156168.7”,1996:“5286046.506”,1997:“5419440.965”,1998:“5456092.63”,1999:“5531691.502”,2000:“5713560.034”,2001:“5601404.839”,2002:“5650949.676”,2003:“5681664.468”,2004:“5790765.052”,2005:“5826393.624”,2006:“5737615.554”,2007:“5828696.5”,2008:“5656838.878”,2009:“5311840.184”,2010:“5433056.536”,iso:“美国”}

是否有一种方法可以在每次触发mouseover事件时动态设置yAxis域

代码在这里

现在,我已经通过域([010000])的硬规则设置了yAxis,还有什么可以绕过它的吗

提前谢谢

d3.csv("path/to/file.csv")
.row(function(d) { return {key: d.key, value: +d.value}; })
.get(function(error, rows) { console.log(rows); });
这段代码实际上起了作用。它允许我重建数据

以前。我的数据在csv文件中,如下所示

year country1 country2 country3 ...
1900 29292929 2324244  45446666
.
.
.
2010 3995959  9598858  43549599
所以,用

.row(函数(d){return{key:d.key,value:+d.value};})

我可以选择要从csv文件中检索的键和值

get(函数(d){返回{year:d.year,值:+d[iso]})

这里的值:+d[iso],'iso'是通过其他函数传递的字符串

year country1 country2 country3 ...
1900 29292929 2324244  45446666
.
.
.
2010 3995959  9598858  43549599
[{'value':2232323,‘年份’:‘2010’}……]


我认为这会让事情变得更好,因为对于我停留的每个国家,它都会给我一系列相关数据。

uhmm粘贴在这里的代码是您正在使用的实际文件还是原始csv有另一种结构?因为这样一来,它就不是csv看起来的样子,而是我正在使用的数据。不过我找到了一个解决方案。
d3.csv(“path/to/file.csv”).row(函数(d){return{key:d.key,value:+d.value};}).get(函数(error,rows){console.log(rows);});
可用于重新构造数据,我认为这是对我来说最好的解决方案。感谢Tomok,我认为我在这里没有帮助,但看到与csv相关的结构,我认为这可能是代码无法正常工作的原因。很高兴你找到了解决方案!