javascript - 在嵌套 JSON 上使用 dc.js 创建条形图

标签 javascript d3.js dc.js crossfilter

我正在尝试使用 dc.js 和 crossfilter 按角色数量创建一个条形图。需要处理嵌套的JSON。

示例数据集

 [      {  "user":"Mani"
            "age":55,
            "area":"NORTH",
            "role": [
                {
                    "roleId": 15,
                    "role": "Operator",
                    "at": "2018-10-30T07:53:10.433Z",
                    "createdAt": "2018-10-30T07:53:10.449Z"

                },
                {
                    "statusId": 16,
                    "status": "Supervisor",
                    "at": "2018-10-30T07:53:18.359Z",
                    "createdAt": "2018-10-30T07:53:18.359Z"

                },
                {
                    "statusId": 26,
                    "status": "Manager",
                    "at": "2018-10-30T13:01:50.296Z",
                    "createdAt": "2018-10-30T13:01:50.296Z"

                }
                ]
        },  {
            "user":"Kandan"
            "age":65,
             "area":"SOUTH",
            "role": [
                {
                    "roleId": 15,
                    "role": "Operator",
                    "at": "2018-10-30T07:53:10.433Z",
                    "createdAt": "2018-10-30T07:53:10.449Z"

                },
                {
                    "statusId": 16,
                    "status": "Supervisor",
                    "at": "2018-10-30T07:53:18.359Z",
                    "createdAt": "2018-10-30T07:53:18.359Z"

                }
                ]
        }
]

我尝试使用每个用户根级别的值创建图表,但是当我尝试访问 role 键时,我不知何故只能使用一个角色,而不是另一方面的所有角色将数组返回到维度。基本思想是 x 轴下有 role.role ,y 轴上有它们的计数。我如何实现这一目标?

示例输出

enter image description here

最佳答案

您的问题并不是真正的嵌套 JSON;而是事实上,每个用户都有多个角色。

要获取每个用户的角色,您可以使用返回角色名称数组的访问器:

var roleDimension = cf.dimension(d => d.role.map(r => r.role), true);

第二个参数指定您想要 "tag" or "array" dimension 。这是一种特殊模式,其中每行将被计算多次,对于维度键访问器返回的数组中的每个标签一次。

我看到您想将其用于条形图,这很好 - don't use this for any chart which implicitly adds up to 100%!由于类别并不相互排斥,因此即使您小心翼翼地不暗示 100%,行为也可能会令人困惑。

关于javascript - 在嵌套 JSON 上使用 dc.js 创建条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395393/

相关文章:

javascript - Vue - 使用 v-for 两次来呈现表行和单元格?

javascript - 为 D3 饼图中的特定部分分配特定颜色

javascript - DC-js中的多系列条形图

javascript - 未定义 bootstrap4-toggle jQuery

Javascript:基于下拉列表填充表

javascript - 创建逗号分隔对象列表的最短方法

javascript - D3无法显示线条

javascript - d3 剪辑路径不适用于填充折线图

javascript - dc.js - dataTable -- 组合数据行