我设置了几个图表来放大容器,效果很好.但是,在初始加载时,缩放级别太接近了.有没有设置初始缩放级别的方法,以避免必须先缩小?我熟悉这个.scale()方法,但没有任何运气实现它.这是要走的路还是我缺少的东西?
这是我到目前为止有关缩放的内容:
var margin = {top: 20, right: 120, bottom: 20, left: 120},
width = 50000 - margin.right - margin.left,
height = 120000 - margin.top - margin.bottom;
var x = d3.scale.linear()
.domain([0, width])
.range([0, width]);
var y = d3.scale.linear()
.domain([0, height])
.range([height, 0]);
var tree = d3.layout.tree()
.size([height, width])
.separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });
var diagonal = d3.svg.diagonal()
.projection(function(d) { return [d.x, d.y]; });
function zoom(d) {
svg.attr("transform",
"translate(" …Run Code Online (Sandbox Code Playgroud) 我用d3.svg.diagonal()渲染了边缘,实现了下图.但是,当我尝试用d3.svg.line()替换对角线时,它似乎不会拉动目标和源数据.我错过了什么?关于d3.svg.line有什么我不懂的吗?

以下是我所指的代码,后面是完整代码:
var line = d3.svg.line()
.x(function(d) { return d.lx; })
.y(function(d) { return d.ly; });
Run Code Online (Sandbox Code Playgroud)
...
var link= svg.selectAll("path")
.data(links)
.enter().append("path")
.attr("d",d3.svg.diagonal())
.attr("class", ".link")
.attr("stroke", "black")
.attr("stroke-width", "2px")
.attr("shape-rendering", "auto")
.attr("fill", "none");
Run Code Online (Sandbox Code Playgroud)
整个代码:
var margin = {top: 20, right: 20, bottom: 20, left: 20},
width =1500,
height = 1500,
diameter = Math.min(width, height),
radius = diameter / 2;
var balloon = d3.layout.balloon()
.size([width, height])
.value(function(d) { return d.size; })
.gap(50)
var line = d3.svg.line()
.x(function(d) { return d.lx; }) …Run Code Online (Sandbox Code Playgroud) 我试图以最简单,最基本的方式在树形图上实现缩放功能,并使其工作.唯一的问题是缩放事件仅在光标位于边,节点或文本上时才有效.当光标位于svg的任何部分时,如何允许缩放?
var margin = {top: 20, right: 120, bottom: 20, left: 120},
width = 2000 - margin.right - margin.left,
height = 2000 - margin.top - margin.bottom;
var x = d3.scale.linear()
.domain([0, width])
.range([0, width]);
var y = d3.scale.linear()
.domain([0, height])
.range([height, 0]);
var tree = d3.layout.tree()
.size([height, width])
.separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });
var diagonal = d3.svg.diagonal()
.projection(function(d) { return [d.y, d.x]; });
var svg = d3.select("body").append("svg")
.attr("width", width + margin.right …Run Code Online (Sandbox Code Playgroud)