使用不同的数据格式创建一行

时间:2015-10-01 21:42:15

标签: d3.js

我试图用这种数据格式制作一些代码:

List<UserModel> models = ...;
List<UserDetails> details = ...;

foreach (UserModel model in models)
{
    foreach (UserDetails detail in details)
    {
        if (detail.RoleId == model.RoleId)
        {
            bool isPrimary = model.SelectedUserType == UserType.Primary;
            detail.IsPrimary = isPrimary;
        }
    }
}

这是生成行的代码:

var data3 =  [
  { "task": "Estructura",  "data": [{"x":new Date(Date.parse("2014-01-03")),"y":0}, {"x":new Date(Date.parse("2014-03-09")),"y":8}] },
  { "task": "Mamposteria", "data": [{"x":new Date(Date.parse("2014-02-01")),"y":0}, {"x":new Date(Date.parse("2014-03-01")),"y":8}] },
  { "task": "Friso",       "data": [{"x":new Date(Date.parse("2014-03-01")),"y":0}, {"x":new Date(Date.parse("2014-03-30")),"y":8}] },
  { "task": "Mortero",     "data": [{"x":new Date(Date.parse("2014-05-01")),"y":8}, {"x":new Date(Date.parse("2014-07-01")),"y":0}] },
  { "task": "Pisos",       "data": [{"x":new Date(Date.parse("2014-07-01")),"y":8}, {"x":new Date(Date.parse("2014-09-01")),"y":0}] }
];

但我遇到了麻烦,因为它不是一个双元素阵列。

我是否必须以其他方式排列数据或在线函数生成器中进行更改?你能举个例子我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这里需要更改两件事 - 您需要遍历每个对象中的data数组,并且需要更改访问器以便它们应用于{中的单个对象{1}}数组:

data

然后要应用该行,您将作用于顶级对象,因此您需要传入var line = d3.svg.line() // line generator .interpolate("linear") // d is a single object in a data array .x(function(d) { return xScale(d.x); }) .y(function(d) { return yScale(d.y); }); 数组:

data

请参阅小提琴:http://jsfiddle.net/h07s5jc5/1/