在DC中为D3绘制多维图

plotting multi dimensions in DC for D3

本文关键字:绘制 D3 DC 中为      更新时间:2023-09-26

我想使用dc.js制作两个图我的数据涉及多个会话(每个通常发生在单独的一天)。每节课都有多个练习,根据不同的参数进行评分。

故事情节:

  1. 选择类型的图。我绘制了所有会话(按时间或会话id),然后使用过滤器允许用户选择一个范围。
  2. 聚合类型的图。这将显示所选会话中所有运动参数数据的平均值。

这个想法是用户可以改变选择的范围,并寻找性能变化的趋势。

json格式的数据如下:

 "Data": [
        {
            "excerciseId": 1,
            "startTime": "01-Jan-2013 10:10:00",
            "stopTime": "01-Jan-2013 10:13:00",
            "numberReps": 11,
            "power": 6.3345681,
            "control": 4.180355137,
            "stability": 0.4893870991,
            "rate": 4.375298413,
            "session": 1,
        },
        {
            "excersiseId": 2,
            "startTime": "01-Jan-2013 10:30:00",
            "stopTime": "01-Jan-2013 10:33:00",
            "numberReps": 12,
            "power": 5.118183368,
            "control": 9.957258023,
            "stability": 9.752985592,
            "rate": 3.202822695,
            "session": 1,
        },
        {
            "excersiseId": 1,
            "startTime": "02-Jan-2013 10:30:00",
            "stopTime": "02-Jan-2013 10:33:00",
            "numberReps": 4,
            "power": 5.597765864,
            "control": 4.512012222,
            "stability": 8.563329462,
            "rate": 7.23380183,
            "session": 2,
        },
        ...
        ...
        ...]

然而,我把它重组成一个平面结构,以很好地发挥交叉过滤器。

我创建了一个组和如下的尺寸:

var sessionDimension = ndx.dimension(function(d) { return d.session; });
var numRepsBySession = sessionDimension.group().reduceSum(function(d) { return d.numReps; });

我有一个很好的柱状图,像这样:

var sessionsByDateBarChart = dc.barChart("#sessions-By-Date-Bar-Chart");
    sessionsByDateBarChart.width(500)
    .height(150)
    .dimension(sessionDimension)
    .group(numRepsBySession)
    .gap(1)
    .x(d3.scale.linear().domain([0, 5]))

我的问题是制作一个图表来显示所选会话的性能摘要。我真正想要的是一个dc.rowChart来绘制功率,控制,稳定性的平均值。我对如何组织我的资料感到困惑。如何在多于一维的情况下用reduceSum做一个群呢?我的图表需要有多个维度,但权力,控制等不能分组,因为它们不是同一件事/单位?

我确定我在组织数据时错过了一个技巧…有人能给我指个方向吗?

您可以融化您的数据以创建一个'变量'或'度量'列,从中您可以创建一个维度,然后为汇总统计数据执行自定义组缩减。