gpt4 book ai didi

javascript - D3 v4 中的 Nest() 函数生成带有 $ 符号的键

转载 作者:行者123 更新时间:2023-11-30 09:13:57 25 4
gpt4 key购买 nike

我第一次使用 d3.nest() 函数尝试在 d3 中绘制等值线。现在,当我嵌套年份和国家时,我看到“$”符号附加到国家(如 $AUS)和年份(如 $1960)。那么,我是否需要以 dataByCountryAndyear['$AUS'] 的形式访问数组?

我读了这篇文章:

Include json in this d3.js calendar view?

似乎这种行为在 d3 v4 中是预期的,但是我想了解在这种情况下使用键访问对象的正确方法是什么。


function ready(error, country_data, lfpr_data) {

// converting strings to numbers where necessary
lfpr_data.forEach(d => {
d.year = +d.year
d.female_lfpr = +d.female_lfpr;
d.male_lfpr = +d.male_lfpr;
});

// nesting by country and year i.e for each country all years beneath it
var dataByCountryByYear = d3.nest()
.key(function(d) { return d.country; })
.key(function(d) { return d.year; })
.map(lfpr_data);

console.log(dataByCountryByYear['$AUS'])

country_data.features.forEach(each_country => {
each_country.properties.years = dataByCountryByYear[each_country.id]
});
}

我的数据如下所示:

year    country country_name    region  female_lfpr male_lfpr   total_lfpr
1960 ABW Aruba Latin America & Caribbean NA NA NA
1960 AFG Afghanistan South Asia NA NA NA
1960 AGO Angola Sub-Saharan Africa NA NA NA
1960 ALB Albania Europe & Central Asia NA NA NA
1960 AND Andorra Europe & Central Asia NA NA NA
1960 ARE United Arab Emirates Middle East & North Africa NA NA NA
1960 ARG Argentina Latin America & Caribbean NA NA NA
1960 ARM Armenia Europe & Central Asia NA NA NA
1960 ASM American Samoa East Asia & Pacific NA NA NA
1960 ATG Antigua and Barbuda Latin America & Caribbean NA NA NA

最佳答案

您没有使用 entries , 这...

Applies the nest operator to the specified array, returning an array of key-values entries. (emphasis mine)

相反,您使用的是 map ,其中:

Applies the nest operator to the specified array, returning a nested map. (emphasis mine)

因此,nest 的结果不是数组,而是 map。 .这是一种不同的对象。

话虽这么说,你的两个问题:

  1. d3.map 将自动设置以 $ 符号开头的键,如您在 D3 source code 中所见:

    export var prefix = "$";

    但您无需在意该前缀(下文会详细介绍)。

  2. 因为这是一个映射,而不是数组,所以您必须使用映射的方法,例如hasgetset。在使用这些方法时,您不需要使用美元符号。

这是您的代码/数据的示例:

const csv = `year,country,country_name,region,female_lfpr male_lfpr,total_lfpr
1960,ABW,Aruba,Latin America & Caribbean,NA,NA,NA
1960,AFG,Afghanistan,South Asia,NA,NA,NA`;

const data = d3.csvParse(csv);

const dataByCountryByYear = d3.nest()
.key(function(d) {
return d.country;
})
.key(function(d) {
return d.year;
})
.map(data);

console.log(dataByCountryByYear.has("AFG"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

关于javascript - D3 v4 中的 Nest() 函数生成带有 $ 符号的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com