2012-11-14 77 views
1

我正在渲染與D3的Cluster Dendogram Example非常相似的樹狀結構。D3.js水平翻轉圖表

我需要水平翻轉圖表,所以父節點在右邊,孩子在左邊。標籤上的文字不能翻轉。哪些D3方法對此負責?從示例

代碼:

var width = 960, 
height = 2200; 

var cluster = d3.layout.cluster() 
    .size([height, width - 160]); 

var diagonal = d3.svg.diagonal() 
    .projection(function(d) { return [d.y, d.x]; }); 

var svg = d3.select("body").append("svg") 
    .attr("width", width) 
    .attr("height", height) 
    .append("g") 
    .attr("transform", "translate(40,0)"); 

d3.json("flare.json", function(error, root) { 
    var nodes = cluster.nodes(root), 
     links = cluster.links(nodes); 

    var link = svg.selectAll(".link") 
     .data(links) 
     .enter().append("path") 
     .attr("class", "link") 
     .attr("d", diagonal); 

    var node = svg.selectAll(".node") 
     .data(nodes) 
     .enter().append("g") 
     .attr("class", "node") 
     .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; }) 

    node.append("circle") 
     .attr("r", 4.5); 

    node.append("text") 
     .attr("dx", function(d) { return d.children ? -8 : 8; }) 
     .attr("dy", 3) 
     .style("text-anchor", function(d) { return d.children ? "end" : "start"; }) 
     .text(function(d) { return d.name; }); 
}); 
+0

查看http://stackoverflow.com/questions/20930401/smooth-transitioning-between-tree-cluster-radial-tree-and-radial-cluster-layo以獲得調整分層佈局的更多可能性。 – VividD

回答

1

在這種情況下,座標來自於簇的佈局。您可以修改佈局,也可以從佈局的寬度中減去.x的代碼,即width - 160。您可能還需要調整text-anchor屬性值。

+0

實際上,座標不是在JSON中編碼的。你可以在這裏查看JSON:http://bl.ocks.org/d/4063570/flare.json – agscala

+0

啊,你當然是對的。座標來自佈局。我編輯了答案 - 其餘仍然有效。 –