NVD3图表中的JSON数据格式

时间:2014-05-13 23:55:36

标签: javascript json nvd3.js

我在NVD3中有一个多条形图的图表模板:http://jsfiddle.net/hohenheim/6R7mu/5/

我想要显示以下JSON数据:

[{"date": 1396828800, "impressions": 49145385},
{"date": 1396915200, "impressions": 46704447},
{"date": 1397001600, "impressions": 47181000},
{"date": 1397088000, "impressions": 47337965},
{"date": 1397174400, "impressions": 51129266},
{"date": 1397260800, "impressions": 60547397},
{"date": 1397347200, "impressions": 62217077},
{"date": 1397433600, "impressions": 49145385},
{"date": 1397520000, "impressions": 46704447},
{"date": 1397606400, "impressions": 47181000},
{"date": 1397692800, "impressions": 47337965},
{"date": 1397779200, "impressions": 51129266},
{"date": 1397865600, "impressions": 60547397},
{"date": 1397952000, "impressions": 62217077}]

我正在寻找使用我拥有的JSON数据(如上所示并在小提琴中注释掉),但不知道如何以NVD3图表接受的格式获取它。该图表目前使用的样本数据对我来说毫无意义。

有没有办法将我的数据转换为NVD3可以接受的内容?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

data5似乎有这种格式:

[
  {key: x, values: VALUES, vAxis: 1},
  {key: x, values: VALUES, vAxis: 1} // and maybe more for more colors
]

和VALUES似乎有这种格式:

[
  {x: 0, y: N},
  {x: 1, y: N},
  {x: 2, y: N} // and more for more on the X axis
]

因此您必须将数据重写为该格式。只有你似乎没有更多来源。你只有一种颜色。什么使{"date": 1396828800, "impressions": 49145385}成为一个或另一个? date是X轴吗?

假设您的数据顺序正确,并且它只有1个来源:

data5 = [{key: 'X', values: [], vAxis: 1}]
yourData.forEach(function(el, i) {
  data5[0].values.push({x: i, y: el.impressions});
     // ^ only 1 source/color
                        // ^ incremental X, starting at 0
});

您可能需要以某种方式调整x和y范围。 (也许vAxis是一个?)

答案 1 :(得分:0)

我只是偶然发现了他们的github页面,似乎上面的答案是正确的。

https://github.com/novus/nvd3/wiki/Sample-chart-(your-first-nvd3-chart!) 图表的数据格式应该是:

[
    {
        key: "<Series name>",
        color: "<CSS color>",
        values: [
            {x: 0, y: 10},
            {x: 1, y: 20},
            {x: 2, y: 30}
            ....
        ]
    },
    {
        key: "<Series name>"
        ...
    }
]