javascript - CSV 中的数据分组(D3.js 和 Chart.js)
问题描述
我有一个这样的csv文件:
id,Annee,Origine,Pax_Total
1,2014,AJACCIO,27494
2,2019,AJACCIO,57525
3,2014,ANGERS,1724
4,2019,ANGERS,4725
...
我想对每个 Origine 进行分组并获得 Pax_Total 的总和。目的是使用 Chart.js 创建条形图。
有我的代码:
d3.csv("https://raw.githubusercontent.com/gflowiz/mapathon/master/DGAC_flux.csv")
.then(makeChart);
function makeChart(ville) {
var sumPaxTotal = d3.rollups(ville, v => d3.sum(v, d => d.Pax_Total), d => d.Origine)
var villeOrigine = d3.groups(ville, d => d.Origine)
var ctx = document.getElementById('chart').getContext('2d');
var chart = new Chart(ctx, {
type: 'horizontalBar',
option:{
maintainAspectRatio: true,
legend: {
display: false
}
},
data: {
labels: villeOrigine,
datasets: [
{
data: sumPaxTotal,
backgroundColor: '#F15F36'
}
]
}
});
console.log(sumPaxTotal)
}
这是 sumPaxTotal 的控制台日志。
我认为存在“阵列”问题,经过大量研究,我还不清楚......
谢谢你的帮助。
解决方案
使用Arrays.map()
,可以按如下方式完成:
data: {
labels: sumPaxTotal.map(v => v[0]),
datasets: [{
label: 'DGAC-Flux',
data: sumPaxTotal.map(v => v[1]),
backgroundColor: '#F15F36'
}]
}
请在下面查看您修改后的代码:
d3.csv("https://raw.githubusercontent.com/gflowiz/mapathon/master/DGAC_flux.csv").then(makeChart);
function makeChart(ville) {
let sumPaxTotal = d3.rollups(ville, v => d3.sum(v, d => d.Pax_Total), d => d.Origine);
let chart = new Chart('chart', {
type: 'horizontalBar',
data: {
labels: sumPaxTotal.map(v => v[0]),
datasets: [{
label: 'DGAC-Flux',
data: sumPaxTotal.map(v => v[1]),
backgroundColor: '#F15F36'
}]
},
options: {
legend: {
display: false
}
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/6.2.0/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id="chart" height="250"></canvas>
推荐阅读
- c# - 如何为post请求格式化json
- reactjs - 在 React 中避免渲染警告
- c# - 获取多个代码,用'|'连接它们 分隔,从一个 id
- c - 在 C 中正确使用常量
- php - 用户提交类似shopify的表单后如何立即创建子域?
- javascript - Leaflet + Polymer 2 使用扭曲的瓷砖加载地图,但适用于非聚合物代码
- linux - 执行 SHA2 时执行多个文件的 awk 命令花费了太多时间
- python - Keras 中的 NN - 预期 dense_2 具有 3 个维度,但得到了形状为 (10980, 3) 的数组
- json - 如何使用 sed 编辑 json 中的值
- c# - 获取管理员权限并将其保存在 C# 中