コードに問題があります。これはデータの例です
var data = [
{
"office": "George Town Office",
"city_name": "George Town",
"total_employee": 2100,
},
{
"office": "George Town Working Space",
"city_name": "George Town",
"total_employee": 100,
},
{
"office": "Renasti KL Office",
"city_name": "Kuala Lumpur",
"total_employee": 1900,
}
]
キー(city_name)でグループ化していますが、total_employeeを計算する必要がある場合、ロールアップに問題があります。これはコードです
var nested_data = d3.nest()
.key(function(d) { return d.city_name; })
//error undefined .rollup(function(v, i) { return v.total_employee; })
.entries(da);
tisのようなコンソール結果の例
0:
key: "George Town"
values: Array(8)
0: {city_name: "George Town", office: "George Town Office", total_employee: 2100, …}
1: {city_name: "George Town", office: "George Town Office Working Space", total_employee: 100, …}
そして私の問題は、同じキーでtotal_employeeを計算する方法ですか?期待される結果
key: "George Town"
values: total_employee: 2200
あなたのrollup
方法では...
.rollup(function(v, i) { return v.total_employee; })
...v
はオブジェクトの配列であり、単一のオブジェクトではありません。したがって、たとえばd3.sum
:を使用して、配列として脅威を与える必要があります。
.rollup(function(v) {
return d3.sum(v, function(e) {
return e.total_employee;
})
})
これがデモです:
var data = [{
"office": "George Town Office",
"city_name": "George Town",
"total_employee": 2100,
},
{
"office": "George Town Working Space",
"city_name": "George Town",
"total_employee": 100,
},
{
"office": "Renasti KL Office",
"city_name": "Kuala Lumpur",
"total_employee": 1900,
}
]
var nested_data = d3.nest()
.key(function(d) {
return d.city_name;
})
.rollup(function(v) {
return d3.sum(v, function(e) {
return e.total_employee;
})
})
.entries(data);
console.log(nested_data)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加