我有一个真实的数据集(https://data.gov.uk/dataset/road-traffic-accidents - 2009),我试图从中提取信息,它有大约2500项,作为样本 -
我使用d3创建一个堆积条形图,显示x轴上的类别 - "轻微,严重,致命"以及y轴上每个类别的事故发生频率。实际的酒吧本身将分为这些事故中有多少是女性和男性。
目前,我正试图弄清楚如何最好地从csv中提取信息。看了几个d3堆叠图表的几个例子,数据似乎是这样安排的(例如来自 - http://www.adeveloperdiary.com/d3-js/create-stacked-bar-chart-using-d3-js/) -
var data=[
{month:'Jan', A:20, B: 5, C: 10},
{month:'Feb', A:25, B: 10, C: 20}
]
var xData = ["A", "B", "C"];

所以使用该示例作为基础,我猜测从这个特定的csv格式化数据的最佳方式可能是什么? -
var data = [
{'Casualty Severity':'Slight', 'Male': 1567, 'Female': 1200 },
{'Casualty Severity':'Serious', 'Male': 100, 'Female': 120 },
{'Casualty Severity':'Fatal', 'Male': 15, 'Female': 5 }
]

不幸的是,我不是很擅长格式化数据,但大致知道如何使用d3.nest
d3.csv('/road_accidents/2009.csv', function(data) {
var severity = d3.nest()
.key(function(d) {
return d['Casualty Severity'];
})
.entries(data);
console.log(severity)
})

在控制台中提供了这个输出 -
扩展看起来像这样 -
所以我想,问题是什么是格式化数据的最佳方式,使用真实数据集在堆积条形图中使用,这是正确的方法吗?
任何帮助都会非常感激!
答案 0 :(得分:1)
这是组织数据的一种方法,可以在构建堆积条形图时轻松使用。如果您不希望它嵌套这么多,它可以进一步简化。
var url = "https://aql.datapress.com/leeds/dataset/road-traffic-accidents/2016-05-19T15:29:13/2009.csv";
d3.csv(url, function(data) {
var severityBySex = d3.nest()
.key(function(d) { return d['Casualty Severity'];})
.key(function(d) { return d['Sex of Casualty']; })
.entries(data);
for (var i = 0; i < severityBySex.length; i++){
console.log(severityBySex[i].key + " - " + "MALE: " +
severityBySex[i].values[0].values.length + " - "
+ "FEMALE: " + severityBySex[i].values[1].values.length);
}
});
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
&#13;