使用d3 javascript对整个csv列求和以显示总计

使用d3 javascript对整个csv列求和以显示总计,javascript,d3.js,Javascript,D3.js,我有以下本地csv文件: country,population,porcentage China,15,1.1 India,86,4.1 United States,357,15.2 Indonesia,1207,51.2 Brazil,717,29.12 我想做的是得到population列的总值,以便在条形图下面显示它。我使用D3CSV函数来处理数据,但问题是,当我获取数据时,函数将数据放在单独的对象中,这不允许我将它们相加。这就是他们的样子 我先用reduce试试,但没用 import

我有以下本地csv文件:

country,population,porcentage
China,15,1.1
India,86,4.1
United States,357,15.2
Indonesia,1207,51.2
Brazil,717,29.12
我想做的是得到population列的总值,以便在条形图下面显示它。我使用D3CSV函数来处理数据,但问题是,当我获取数据时,函数将数据放在单独的对象中,这不允许我将它们相加。这就是他们的样子

我先用reduce试试,但没用

import { csv, sum } from 'd3';

csv("./src/bardata.csv", (() => {
    var sum;
    return sum = (...args) => {
        return args.reduce((a, b) => a + b, 0);
    };
}))();

我也尝试过使用map函数,但我的理解是,这只适用于数组,并且我的数据位于不同的对象中。无论如何,我一直收到“data.map不是函数”错误。有什么建议吗?

请尝试按以下方式使用:

import { csv, sum } from 'd3';

csv("./src/bardata.csv", (data) => {
    const result = sum(data, function(d) { return +d.population; })
});
您已经导入了可以通过提供访问器函数作为第二个参数来对对象数组求和的函数:

d3.求和(iterable[,存取器])

返回给定可数的总和。如果iterable不包含数字,则返回0。可以指定可选的访问器函数,这相当于在计算总和之前调用Array.from

对于您的代码,这可能是以下几行代码

import { csv, sum } from 'd3';

csv("./src/bardata.csv")
  .then(data => {
    const total = sum(data, d => d.population);
  });

import./style.css';从'd3'导入{csv,sum};var data=csv(“./src/bardata.csv”)console.log(sum(data,d=>d.population))
这给了我0
import./style.css';从'd3'导入{csv,sum};var data=csv(“./src/bardata.csv”,d=>+d.population)var total=sum(data,d=>d.population)console.log(total)
这也给了我控制台上的0这是我的版本“d3”:“^5.15.0”,从“d3”导入“{csv,sum}”;csv(“./src/bardata.csv”,(数据)=>{const result=sum(数据,函数(d){return+d.population;})console.log(result)})使用这种方式,控制台返回(5)0。使用这种方式
从'd3'导入{csv,sum};var total=csv(“./src/bardata.csv)”,(数据)=>{const result=sum(数据,函数(d){return+d.population;})});log(total)
返回一个包含数组[0]和3列的承诺。好的,这很有效,只是为了补充,我在控制台中得到了我想要的,但是当我这样做时,
从'd3'导入{csv,sum};var all=csv(“./src/bardata.csv”)。然后(data=>{const total=sum(data,d=>d.population)});log(all)
为了使用结果附加我的svg或任何东西,它返回一个承诺,而不是值。我的问题是,我是否必须在此函数中编写代码以附加到图表中,或者是否有办法从函数中获得结果并将其用作常量。@JuanCarlosbillidoarena是的,依赖于加载文件的所有内容都必须进入处理函数。不能从异步函数返回值。关于如何处理这一问题,有许多问题,其中大多数问题都被作为一个副本关闭。