使用 javascript 访问表格数据结构
Access tabular data structure with javascript
使用Javascript和D3js进行数据的可视化,我尝试使用外部csv文件,该文件是从德国政府的数据门户下载的>。按性别和日期划分的德国联邦州人口数据以 csv 形式提供,类似于同样可用的 xlsx 文件的表格结构。有一个页眉和一个页脚,我不感兴趣(第 1-5 行和第 28-32 行)。实际数据有一个层次结构,第一行是德国的不同州,第二行是性别,然后是几行,其中包含不同日期的人口数量(第一列)。最后,我希望有一个对象数组,例如
[{name: "Bavaria", male:10000, female: 10000, overall: 20000},{name: ...}]
到目前为止,我正在使用以下代码:
d3.csv("externaldata/12411-0021.csv", function(data){
states = data;
});
这将返回一个对象数组,而每个对象似乎都与文档中的行相关。我的想法是从这些对象中提取信息,但我不知道如何访问/解析单行。
如果你的列名是 name
、 male
、 female
和 overall
,那么 states
var 应该包含你根据你的示例想要的内容。
因此,如果 var states
是一个对象数组(或关联数组数组),则可以像这样访问单行:
var firstRow = states[0];
// > {name: "Bavaria", male:10000, female: 10000, overall: 20000}
您可以像这样访问该行的列:
var firstRowName = states[0]["name"];
// > "Bavaria"
或
firstRowName = states[0].name;
// > "Bavaria"
将数据"绑定"到 SVG 中的元素。一旦绑定了顶级元素和数据(即.csv到表),您还需要关联较低级别的元素(例如,您的案例中的对象和行)。
您还需要决定如何在幕后构建您的表格。D3 将其所有元素放在 SVG 对象中,而 SVG 不喜欢表。因此,您可能需要添加一个名为表的组,称为行的组,然后添加单元格的矩形和文本。
因此,首先,您需要将整个数据对象链接到表。然后,您需要告诉 d3,该数据对象中的每个项目对应于表中的一行。
var csv = d3.csv("path/to/file.csv")
.row(function(d) { return {key: d.key, value: +d.value}; })
.get(function(error, rows) { console.log(rows); });
https://github.com/mbostock/d3/wiki/CSV
然后,您的代码应如下所示(未选中!
var svg = d3.select("body").append("svg");
var table = svg.selectAll("g.table").data(csv).enter().append("g").attr("class","table");
var rows = table.selectAll("g.row").data(function(d){return d;}).enter().append("g").attr("class","row");
rows.selectAll("rect.cell").data(function(d){return d;}).enter().append("rect").attr("class","cell").attr("x","").attr("y","").attr("width","").attr("height","");
rows.selectAll("text.cell").data(function(d){return d;}).enter().append("text").attr("class","cell").attr("x","").attr("y","").attr("text-anchor","").text(function(d){ return d; });
此特定代码是否有效将取决于您的确切数据结构。
- JS库支持各种数据结构?(如爪哇的番石榴)
- JavaScript数据结构
- Node JS,传统的数据结构?(如Set等),任何类似Java.util的node
- 更正扁平数据模型和noSQL数据结构
- 用于筛选无模式集合的最快数据结构
- 将数据结构转换为二进制数据
- JavaScript 设置具有对数搜索时间的数据结构
- 更好的数据结构来处理这个数组
- Firebase 数据结构理念
- 基于其他数据结构更新 AngularJS 中的数据结构
- JavaScript - JSON 数据结构的构建 - 如何使用变量值更改键名
- 如何处理在javascript中访问数据结构的两个回调
- 文字与原型对象表示法的数据结构
- 表示可用产品的所有组合的数据结构
- 使用jquery调整表格布局/结构
- Immutable.js:表示2D游戏场的数据结构
- javascript和python返回的相同数据结构在d3.js中表现不同
- 无法识别的数据结构-转换为对象
- 限制嵌套的Angular ng重复数据结构
- 使用 javascript 访问表格数据结构