2014-06-11 37 views
0

我想通过使用由工作日和值组成的公司分支数据绘制多行图表。在X轴上有分类数据的D3多行图表

var data = [ 
    { 
     "label": "branch-1", 
     "values": [ 
      { "day": "Monday", "value": 20}, 
      { "day": "Tuesday", "value": 18}, 
      { "day": "Wednesday", "value": 29}, 
      { "day": "Thursday", "value": 31}, 
      { "day": "Friday", "value": 37}, 
      { "day": "Saturday", "value": 25}, 
      { "day": "Sunday", "value": 19} 
     ] 
    }, 
    { 
     "label": "branch-2", 
     "values": [ 
      { "day": "Monday", "value": 32}, 
      { "day": "Tuesday", "value": 29}, 
      { "day": "Wednesday", "value": 37}, 
      { "day": "Thursday", "value": 41}, 
      { "day": "Friday", "value": 31}, 
      { "day": "Saturday", "value": 28}, 
      { "day": "Sunday", "value": 17} 
     ] 
    } 
] 

FIDDLE LINK

首先,我对x-axis具有天的问题。由于“d”属性在svg路径上具有Nan值而不是正确的x坐标,因此不生成线。我知道我不应该使用minX,maxX for x.domain,但是我找不到要使用的内容。

其次,我用d3.scale.category20()函数来生成颜色。但我想知道,如果有超过20个分支,我是否可以使用超过20种颜色。是否可以使用CSS

在此先感谢。

回答

1

序数标度需要明确地设置其域,也就是说,序号域没有“min”或“max”的概念。你必须做类似

x.domain(data[0].values.map(function (d) { return d.day; })); 

完整的演示here。至于颜色,你可以在CSS或D3代码中设置任何你想要的。

+0

感谢您的回答。我相应地修改了我的代码,它就像一个魅力。 – Ayberk