2

我必须在“Line Plus Bar Chart”中添加适当的时间线,这意味着日期必须均匀地分布在 x 轴上。例如 AAPL 的股息历史。 在此处输入图像描述 而且由于 AAPL 在 1995 年到 2012 年之间没有付款,所以应该有空白。所以我需要根据第一个和最后一个日期传播 x 轴。像这样: 在此处输入图像描述 有没有办法在实际日期上显示固定的 x 轴,而忽略数据?

还是我需要向我的股息集添加 0 个值?这是我的股息集数据。

<script type="text/javascript">
    function exampleData() {
        return [
            {
                "key" : "Dividends" ,
                "bar": true,
                "values" : [

                        [ 547707600000 , 0.015 ] , 

                        [ 555570000000 , 0.015 ] , 

                        [ 564127200000 , 0.02 ] , 

                        [ 571644000000 , 0.02 ] , 

                        [ 579762000000 , 0.02 ] , 

                        [ 587624400000 , 0.02 ] , 

                        [ 596095200000 , 0.025 ] , 

                        [ 603698400000 , 0.025 ] , 

                        [ 611816400000 , 0.025 ] , 

                        [ 619678800000 , 0.025 ] , 

                        [ 627285600000 , 0.0275 ] , 

                        [ 635148000000 , 0.0275 ] , 

                        [ 643266000000 , 0.0275 ] , 

                        [ 651128400000 , 0.0275 ] , 

                        [ 658735200000 , 0.03 ] , 

                        [ 666597600000 , 0.03 ] , 

                        [ 674715600000 , 0.03 ] , 

                        [ 682578000000 , 0.03 ] , 

                        [ 690444000000 , 0.03 ] , 

                        [ 698047200000 , 0.03 ] , 

                        [ 707374800000 , 0.03 ] , 

                        [ 714027600000 , 0.03 ] , 

                        [ 723103200000 , 0.03 ] , 

                        [ 729496800000 , 0.03 ] , 

                        [ 738565200000 , 0.03 ] , 

                        [ 745477200000 , 0.03 ] , 

                        [ 753688800000 , 0.03 ] , 

                        [ 760600800000 , 0.03 ] , 

                        [ 770014800000 , 0.03 ] , 

                        [ 776926800000 , 0.03 ] , 

                        [ 785138400000 , 0.03 ] , 

                        [ 792655200000 , 0.03 ] , 

                        [ 801464400000 , 0.03 ] , 

                        [ 808549200000 , 0.03 ] , 

                        [ 816933600000 , 0.03 ] , 

                        [ 1344488400000 , 2.65 ] , 

                        [ 1352268000000 , 2.65 ] , 

                        [ 1360216800000 , 2.65 ] 

                ]
            } ,

            {
                "key" : "Dividends together" ,
                "values" : [


                            [ 547707600000 ,
                                0.015 ]
                            , 

                            [ 555570000000 ,
                                0.03 ]
                            , 

                            [ 564127200000 ,
                                0.05 ]
                            , 

                            [ 571644000000 ,
                                0.07 ]
                            , 

                            [ 579762000000 ,
                                0.09 ]
                            , 

                            [ 587624400000 ,
                                0.11 ]
                            , 

                            [ 596095200000 ,
                                0.135 ]
                            , 

                            [ 603698400000 ,
                                0.16 ]
                            , 

                            [ 611816400000 ,
                                0.185 ]
                            , 

                            [ 619678800000 ,
                                0.21 ]
                            , 

                            [ 627285600000 ,
                                0.2375 ]
                            , 

                            [ 635148000000 ,
                                0.265 ]
                            , 

                            [ 643266000000 ,
                                0.2925 ]
                            , 

                            [ 651128400000 ,
                                0.32 ]
                            , 

                            [ 658735200000 ,
                                0.35 ]
                            , 

                            [ 666597600000 ,
                                0.38 ]
                            , 

                            [ 674715600000 ,
                                0.41 ]
                            , 

                            [ 682578000000 ,
                                0.44 ]
                            , 

                            [ 690444000000 ,
                                0.47 ]
                            , 

                            [ 698047200000 ,
                                0.5 ]
                            , 

                            [ 707374800000 ,
                                0.53 ]
                            , 

                            [ 714027600000 ,
                                0.56 ]
                            , 

                            [ 723103200000 ,
                                0.59 ]
                            , 

                            [ 729496800000 ,
                                0.62 ]
                            , 

                            [ 738565200000 ,
                                0.65 ]
                            , 

                            [ 745477200000 ,
                                0.68 ]
                            , 

                            [ 753688800000 ,
                                0.71 ]
                            , 

                            [ 760600800000 ,
                                0.74 ]
                            , 

                            [ 770014800000 ,
                                0.77 ]
                            , 

                            [ 776926800000 ,
                                0.8 ]
                            , 

                            [ 785138400000 ,
                                0.83 ]
                            , 

                            [ 792655200000 ,
                                0.86 ]
                            , 

                            [ 801464400000 ,
                                0.89 ]
                            , 

                            [ 808549200000 ,
                                0.92 ]
                            , 

                            [ 816933600000 ,
                                0.95 ]
                            , 

                            [ 1344488400000 ,
                                3.6 ]
                            , 

                            [ 1352268000000 ,
                                6.25 ]
                            , 

                            [ 1360216800000 ,
                                8.9 ]



                ]
            }
        ].map(function(series) {
                    series.values = series.values.map(function(d) { return {x: d[0], y: d[1] } });
                    return series;
                });
    }
</script>

这是我的 d3.js/nv 代码:

nv.addGraph(function() {
    var testdata = exampleData(),
        chart = nv.models.linePlusBarChart()
            .margin({top: 30, right: 70, bottom: 50, left: 70})
            .x(function(d,i) { return i })
            .color(d3.scale.category10().range());

    chart.xAxis.tickFormat(function(d) {
        var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
        return d3.time.format('%x')(new Date(dx))
    });

    chart.y1Axis
        .tickFormat(d3.format(',05f'));

    chart.y2Axis
        .tickFormat(function(d) { return '$' + d3.format(',05f')(d) });

    chart.bars.forceY([0]);
    chart.lines.forceY([0]);

    d3.select('#chart svg')
        .datum(exampleData())
        .transition().duration(500).call(chart);

    nv.utils.windowResize(chart.update);

    return chart;
});

我想如果它不能通过某些 NDV3 函数完成,我必须计算股息之间的平均间隔,然后检查,如果在该范围内有日期,如果没有,我将添加类似的日期间隔,股息金额为 0。或者最好的方法是什么?

4

1 回答 1

0

我忘了在这里发布答案。我在 NVD3 库中没有找到任何可以解决此问题的函数。只需在数据中生成零值的日期。

于 2016-07-12T11:40:26.633 回答