2012-02-17 159 views
21

我想在D3中创建一些图。到目前为止,爱它,但我有点卡住了。 我想创建一个区域来保存数据点,另一个区域保存轴和标签。 我想我会更加细致,比更新图形效率更高。但是我遇到的问题是,我似乎无法选择SVG中的子元素。D3在SVG中选择一个元素

以下是我有:

var graph = d3.select('#Graph svg') 
if (graph[0][0] == null){ 
    graph = d3.select('#Graph') 
     .append("svg:svg") 
     .attr("width",width) 
     .attr("height",height) 
     .attr("class","chart"); 
} 

graph.append("svg:g") 
    .attr("id","data") 

现在我还没有找到一种方法来选择数据容器。我试过

d3.select("#Graph svg data") 

但是没有运气。有任何想法吗?

+4

如果你想选择一个'data'的'id',你应该选择'#Graph svg#data',对吧? – Phrogz 2012-02-17 17:18:40

回答

19

让我们试试这段代码。

d3.select("#Graph svg").selectAll("g") 

“g”表示选择svg节点下的所有节点“g”。

0

使用append创建数据容器时,可以将选择内容保存到变量中。

var dataContainer = graph.append("svg:g") 
    .attr("id","data"); 

如果这样你就不需要做出选择(在您与一号线图做了类似的方式)来完成,因为它已经存储在您的VAR dataContainer