繁体   English   中英

d3 热图列标题作为 yaxis

[英]d3 heatmap column headers as yaxis

我有一个这样的数据集:

CT, CA, GA, TX, Year, Month
1, 1, 2, 4, 2016, 03
2, 1, 3, 5, 2016, 03

状态栏下的数字对应于出现的次数。 我将数据加载到 d3 中,但是如何将数据重新组织为只有 4 列,如下所示:

state, count, year, month
CT, 1, 2016, 03

这是我到目前为止所得到的:

d3.csv("states.csv", function(error, Data){

            Data.forEach(function(d){
                d.CT = +d.CT;
                d.CA = +d.CA;
                d.GA = +d.GA;
                d.TX = +d.TX;
                d.Year = +d.Year;
                d.month = +d.month;

        });

如果我正确理解了您想要的输出数组,则forEachfor...in这种组合可以创建它:

 var csv = `CT,CA,GA,TX,Year,Month 1,1,2,4,2016,03 2,1,3,5,2016,03`; var data = d3.csvParse(csv); var newData = []; data.forEach(function(d) { for (var key in d) { if (key != "Year" && key != "Month") { newData.push({ state: key, count: d[key], year: d.Year, month: d.Month }) } } }); console.log(newData);
 <script src="https://d3js.org/d3.v4.min.js"></script>

由于我无法在堆栈片段中加载真正的 CSV,我将您的示例数据集存储在一个变量中并使用d3.csvParse对其进行d3.csvParse 但是,原理是一样的:只需将该函数放在d3.csv回调中即可。

PS :根据您所需输出的示例...

state, count, year, month
CT, 1, 2016, 03

...我假设您不想对具有相同年份和月份的对象求和。 如果您确实想对它们求和,请发布另一个问题,询问如何进行(或进行搜索,因为这是一个常见问题,已经回答)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM