【发布时间】:2015-10-15 13:53:19
【问题描述】:
我有 sunburst 可视化,它与this CodePen 中的代码结构基本相同(来自this question on stackoverflow。我还尝试包括不仅可以放大,还可以在内部缩小旭日形(点击到旭日形中间时)。我已经尝试了以下步骤,但到目前为止这些步骤都没有奏效,我不知道如何做到这一点(抱歉,如果这是一件很容易做到的事情,我我对 JS 很陌生)。
包括在开头:
var x = d3.scale.linear()
.range([0, 2 * Math.PI]);
var y = d3.scale.linear()
.range([0, radius]);
将圆弧参数改为:
var arc = d3.svg.arc()
.startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
.endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
.innerRadius(function(d) { return Math.max(0, y(d.y)); })
.outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
将arcTween() 函数更改为:
function arcTween(d){
var xd = d3.interpolate(x.domain(), [d.x, d.x + d.dx]),
yd = d3.interpolate(y.domain(), [d.y, 1]),
yr = d3.interpolate(y.range(), [d.y ? 20 : 0, radius]);
return function(d, i) {
return i
? function(t) { return arc(d); }
: function(t) { x.domain(xd(t)); y.domain(yd(t)).range(yr(t)); return arc(d); };
};
};
但这不起作用。
谁能帮帮我?
【问题讨论】:
-
看起来您从here 检索到 arcTween 代码...您没有使用该示例作为您的基础是否有原因?您是否尝试保持悬停行为?
-
另外,一支完整的笔或你的代码会很有帮助
-
更新后的答案对您有用吗?如果确实如此,请接受它;)
-
感谢您的帮助,Skip Jack,接受! :)(抱歉回复晚了!)
-
哈哈,没问题,谢谢...我将再编辑一下答案,以便其他任何偶然发现此问题的人都清楚。您可能想将问题更改为“如何在可缩放的旭日形图中使用 CSV 数据?”
标签: javascript d3.js sunburst-diagram