2 votes

Ligne de temps du NVD3 Line Plus Bar Chart

Je dois ajouter une chronologie appropriée au "Line Plus Bar Chart", ce qui signifie que les dates doivent être réparties de manière égale sur l'axe des x. Par exemple, l'historique des dividendes de AAPL. enter image description here Et comme AAPL n'a pas fait de paiement entre 1995 et 2012, il devrait y avoir un espace vide. J'ai donc besoin que l'axe des x soit réparti en fonction de la première et de la dernière date. Quelque chose comme ça : enter image description here Existe-t-il un moyen d'afficher l'axe des x fixé sur des dates réelles, en ignorant les données ?

ou dois-je ajouter 0 valeur à mon dividend_set ? Voici mes données pour dividend_set.

<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>

Voici mon code 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;
});

Je suppose que si cela ne peut pas être fait par une fonction NDV3, je dois calculer l'intervalle moyen entre les dividendes et ensuite vérifier s'il y a une date dans cet intervalle et si non, j'ajouterai un intervalle de date similaire avec un montant de dividende nul. Ou quelle serait la meilleure méthode ?

0voto

Lucas03 Points 1247

J'ai oublié de poster la réponse ici. Je n'ai pas trouvé de fonction dans la bibliothèque NVD3 qui pourrait résoudre ce problème. Il suffit de générer des dates avec des valeurs nulles dans vos données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X