martin
martin

Reputation: 1974

Angular-Nvd3 dates and numbers do not match data

I'm using Angular-Nvd3 to represent my sets of data, and I'm currently getting some weird results from my data. The dates and numbers in my data does not correspond to the dates and numbers that are shown on the graph.

My $scope.data contains this JSON-array: http://www.jsoneditoronline.org/?id=654aba4a1a8f3fd7d31f75dd295da363

and my $scope.options look like this:

            $scope.options = {
                chart: {
                    type: 'cumulativeLineChart',
                    height: 450,
                    margin : {
                        top: 20,
                        right: 20,
                        bottom: 60,
                        left: 65
                    },
                    x: function(d){ return d[0]; },
                    y: function(d){ return d[1]; },
                    average: function(d) { return d.mean/100; },

                    color: d3.scale.category10().range(),
                    transitionDuration: 300,
                    useInteractiveGuideline: true,
                    clipVoronoi: false,

                    xAxis: {
                        axisLabel: 'X Axis',
                        tickFormat: function(d) {
                            return d3.time.format('%m/%d/%Y')(new Date(d))
                        },
                        showMaxMin: false,
                        staggerLabels: true
                    },

                    yAxis: {
                        axisLabel: 'Y Axis',
                        tickFormat: function(d){
                            return d3.format('')(d);
                        },
                        axisLabelDistance: 20
                    }
                }
            };

The problem is that my chart only shows dates from 1970, and the numbers are completely off:

enter image description here

I have no idea why the chart is showing both the wrong dates and numbers, please help me figuring this out.

Upvotes: 0

Views: 440

Answers (1)

Mosh Feu
Mosh Feu

Reputation: 29337

Your values are actually in 1970.

You can see it by yourself:

var json = [
  {
    "key": "IBM",
    "values": [
      [
        1112313600,
        90.44
      ],
      [
        1124755200,
        82.03
      ],
      [
        1137456000,
        83
      ],
      [
        1149811200,
        77.63
      ],
      [
        1162252800,
        92.33
      ],
      [
        1175040000,
        94.26
      ],
      [
        1187568000,
        109.22
      ],
      [
        1200009600,
        97.67
      ],
      [
        1212624000,
        128.47
      ],
      [
        1225065600,
        79.66
      ],
      [
        1237766400,
        98.71
      ],
      [
        1250121600,
        119.58
      ],
      [
        1262736000,
        130
      ],
      [
        1275350400,
        124.34
      ],
      [
        1287619200,
        139.83
      ],
      [
        1300233600,
        153
      ],
      [
        1312761600,
        166.22
      ],
      [
        1325116800,
        186.18
      ],
      [
        1337731200,
        196.12
      ],
      [
        1350259200,
        208.93
      ],
      [
        1363132800,
        212.06
      ],
      [
        1375660800,
        195.5
      ],
      [
        1388016000,
        185.35
      ],
      [
        1400630400,
        186.39
      ],
      [
        1413158400,
        183.52
      ],
      [
        1425859200,
        160.77
      ],
      [
        1438214400,
        160.96
      ]
    ]
  }
];

[].forEach.call(json[0].values, function(value) {
  document.body.innerHTML += '<div>' + new Date(value[0]) + '</div>';
});

Upvotes: 1

Related Questions