javascript - d3 : how to interpolate a string (with numbers in it) so that the numbers don't get interpolated

标签 javascript svg d3.js

我是 javascript 的新手,但几周前刚刚钻研 d3.js 尝试 创建时空可视化。

我想要实现的是基于以下代码的类似 ( https://jsfiddle.net/dmatekenya/mz5fxd44/):

var w1 = ["Dunstan","Mercy","Lara","Khama"];
var w2 =["August 1,2013","August 2,2013","August 3,2013"]
var text = d3.select("body")
            .attr("fill","red")
            .text("Dunstan")
            .attr("font-size", "50px");  
var j = 0;
var transition = function() {
return text.transition().duration(500).tween("text", function() {
   var i = d3.interpolateString(w1[j], w1[j + 1]);
   return function(t) {
    this.textContent = i(t);
  };
}).each('end', function() {
  j += 1;
  if (!(j > w1.length)) return transition();
});
};
transition();

但是,我想使用日期字符串(如上面代码片段中的 w2)。当我这样做时,d3 也会插入字符串中嵌入的数字,并且输出不是我要找的。我需要有关如何以某种方式创建自定义插值器的帮助,该插值器可以在忽略日期字符串的同时插入日期字符串。我从 d3 文档 ( https://github.com/mbostock/d3/wiki/Transitions#tween ) 知道可以将自定义插值器推送到 d3 插值器数组中,但我已经尝试过但仍然无法让它工作。

需要您的帮助。

最佳答案

也许您需要 d3.scaleQuantize()

例如:

var color = d3.scaleQuantize()
    .domain([0, 1])
    .range(["brown", "steelblue"]);

color(0.49); // "brown"
color(0.51); // "steelblue"

关于javascript - d3 : how to interpolate a string (with numbers in it) so that the numbers don't get interpolated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812837/

相关文章:

javascript - 一键隐藏和显示多个div

javascript - JavaScript 什么时候执行?

javascript - 如何避免必须点击 TouchableOpacity 两次才能触发 onPress 事件?

javascript - Snap.svg 与 Svg.js

javascript - 按住按钮可在 Android PhoneGap 中执行操作

html - 用图案填充 SVG 路径而不拉伸(stretch)

html - 使 SVG 图标获得 100% 的网格区域高度,而宽度服从纵横比

javascript - d3.js 使轴刻度可点击

javascript - 带 ZOOM 的 D3 多系列折线图

jquery - D3 可重复使用的图表功能创建多个图表