Date 如何使用d3中的nest来使用';月份';作为密钥,但我的csv文件包含整个日期?

Date 如何使用d3中的nest来使用';月份';作为密钥,但我的csv文件包含整个日期?,date,csv,d3.js,Date,Csv,D3.js,使用上面的代码,我可以按日期分组,格式为yyyy-mm-dd,但我想使用月份作为键进行分组。我该怎么做 您需要更改键函数以返回要嵌套的值。在大多数情况下,key函数只返回数据对象的属性(如d.date),但在您的情况下,该函数将需要更多的计算 如果您的日期存储为格式为“yyyy-mm-dd”的字符串,则有两个用于提取月份的选项:或 用于提取“-”字符之间的字符串部分,或 将其转换为日期,并使用日期方法提取日期的组成部分 浏览器可以使用本机Javascriptnew date(string)构

使用上面的代码,我可以按日期分组,格式为yyyy-mm-dd,但我想使用月份作为键进行分组。我该怎么做

您需要更改键函数以返回要嵌套的值。在大多数情况下,key函数只返回数据对象的属性(如
d.date
),但在您的情况下,该函数将需要更多的计算

如果您的日期存储为格式为“yyyy-mm-dd”的字符串,则有两个用于提取月份的选项:或

  • 用于提取“-”字符之间的字符串部分,或

  • 将其转换为日期,并使用日期方法提取日期的组成部分


浏览器可以使用本机Javascript
new date(string)
构造函数转换不同的日期格式,因此,如果您使用的是日期对象,则可能需要使用的
format.parse(string)
方法以确保结果一致。

您需要更改键函数以返回要嵌套的值。在大多数情况下,key函数只返回数据对象的属性(如
d.date
),但在您的情况下,该函数将需要更多的计算

如果您的日期存储为格式为“yyyy-mm-dd”的字符串,则有两个用于提取月份的选项:或

  • 用于提取“-”字符之间的字符串部分,或

  • 将其转换为日期,并使用日期方法提取日期的组成部分


浏览器可以使用本机Javascript
newdate(string)
构造函数转换不同的日期格式,因此如果您使用的是日期对象,则可能需要使用的
format.parse(string)
方法来确保结果一致。

您可以使用内置方法
d3.timeMonth()
获取月份第一天的日期,如:

           var data = d3.nest()
          .key(function(d) { return d.date;})
          .rollup(function(d) { 
           return d3.sum(d, function(g) {return g.something; });
          }).entries(csv_data);
如果
d.date
不是javascript
date
对象,则必须首先将其解析为一个对象

d3.nest()
  .key(function(d){ return d3.timeMonth(d.date); });

您可以使用内置方法
d3.timeMonth()
获取月份的第一天,例如:

           var data = d3.nest()
          .key(function(d) { return d.date;})
          .rollup(function(d) { 
           return d3.sum(d, function(g) {return g.something; });
          }).entries(csv_data);
如果
d.date
不是javascript
date
对象,则必须首先将其解析为一个对象

d3.nest()
  .key(function(d){ return d3.timeMonth(d.date); });