0

我有以下图表配置:

nv.addGraph(function() {
    var chart = nv.models.cumulativeLineChart()
        .x(function(d) { return d.x.getTime() })
        .y(function(d) { return d.y })
        .color(d3.scale.category10().range());

    chart.xAxis
        .axisLabel('Período')
        .tickFormat(function(d) {
            return d3.time.format("%m/%y")(new Date(d));
        });

    chart.yAxis
        .axisLabel('Rentabilidade')
        .tickFormat(function(d) {
            return (d * 100).toFixed(2) + '%';
        });

    d3.select('#profitability-chart')
        .datum(data)
        .transition().duration(500)
            .call(chart);

    return chart;
});

问题是图表中的每个最后一点都显示了不同的格式y值。例如:

图表上的“Foo”行:

  • 最后一点显示“36%”
  • 检查data数组,
    • y = 1.7205607426554128
    • 显示.y = 0.3602803713277064

是数据样本。

我不知道这个display.y来自哪里,以及这个值是如何计算的。我以为d3.format是在更改实际值,所以我切换到了手动 tickFormat,但问题仍然存在。

PS.:我也在使用 angular.js。

4

1 回答 1

0

Lars Kotthoff在评论中回答。基本上,我是这样构建数据的:

{
    "key": "Fund 1",
    "values": [
        {
            "x": "1999-11-05T02:00:00.000Z",
            "y": 1
        },
        {
            "x": "1999-11-13T02:00:00.000Z",
            "y": 1.00342088549313
        },
        ...
    ]
}

基本上,我的y值是实际百分比,计算除以第一个值(这就是第一个值为 1 的原因)。

真正应该做的是为图表提供绝对值,例如:

{
    "key": "Fund 1",
    "values": [
        {
            "x": "1999-11-05T02:00:00.000Z",
            "y": 120045.21
        },
        {
            "x": "1999-11-13T02:00:00.000Z",
            "y": 32521.01
        },
        ...
    ]
}

NVD3 将计算所有百分比。

于 2013-07-23T14:49:38.550 回答