2016-04-29 50 views
1

使用D3现在我试图创建一个地图,看起来像这样一个传奇成功创建了几个图表后:D3圆环图上赛季固定标签

Example of a donut chart as a legend.

这是一种表达形式每年的季节图表会以固定标签下方的颜色标明,表明每年的每个月(在图像中它们被舍入到几个月,但我不希望这种情况发生在我尝试创建的圆环图中) 。

现在我想我会在D3js页面上按照环形图的example开始,然后添加一些固定的标签。在达到那一点之前,虽然我发现自己陷入困境,无法复制这个例子。

我试着用Plunkr here做一个简明的例子,我想知道是否有人会看一看。我已经按照方法here使用创建的对象作为数据输入,但我没有看到任何错误,但也许我错了。我收到错误消息如下:1494

Uncaught TypeError: Cannot read property 'indexOf' of undefined: Main.js(1494) 

线对应的Plunkr线37,阅读:

.append(g) 

这使我相信,当我点事情错了d3的数据,但我不确定这是什么。我会欣赏一双新鲜的眼睛!

+0

这是错误的'.append(G)'它应该是'.append( “G”)' – Cyril

+0

好吧,那是一种虎头蛇尾。谢谢! 但是,当我解决这个问题时,我在页面上留下了一个空的div。任何想法发生了什么? – Yoeri

回答

1

你有几个问题:

首先,你忘了复制/粘贴博斯托克的例子后改变​​。我改变了它的dur

var pie = d3.layout.pie() 
.sort(null) 
.value(function(d) { 
    return d.dur 
}); 

在那之后,我不得不改变你的数据:

var data = [ 
{ seizoen: "lente", dur: 60 }, 
{ seizoen: "zomer", dur: 122 }, 
{ seizoen: "herfst", dur: 61 }, 
{ seizoen: "winter", dur: 122 } 
]; 

而且,你忘了使用#以选择div的ID:

var svg = d3.select("#legend").append("svg") 

顺便说一下,你的jQuery路径不正确,你的CSS中的#legend很少。

现在你有一个甜甜圈:http://plnkr.co/edit/B2CJMN7Wy1By0jlMpkii?p=preview

+0

叹了口气,这是漫长的一周。感谢您的帮助!我甚至在我的编辑中评论过“人口”部分。 – Yoeri

+0

不用担心。我不使用jquery,所以我只复制了我在cdnjs中找到的第一条路径。另外,我将CSS中的#legend更改为固定值(像素),您也可以更改。干杯。 –

+0

不是在实际的产品中,但它在PLUNER中是更好的,再次感谢。 你知道从哪里开始为这件事添加固定标签吗?在google上快速搜索只会提供这个问题作为答案,但也许我正在寻找错误的方向。 – Yoeri