我有一个真实的数据集(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)
})
可以将其提供到控制台中-
扩展看起来像这样-
所以我想,问题是,使用在堆叠条形图中使用的真实数据集来格式化数据的最佳方法是什么,这将是正确的方法吗?
任何帮助将不胜感激!
最佳答案
这是组织数据的一种方法,在构建堆积的条形图时将使其易于使用。如果您不希望嵌套太多,可以进一步简化它。
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);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>