invert方法确实好用,给他一个值,他就能返回对应的X轴的值。但是他只在d3.date.scale里面有。在d3.scale.ordinal()里面,却不存在,再查阅了网上的英文资料后,才发现,这个可以自己来搞一个。今天就将其记录下来
var barLabels = dataset.map(function(datum) {
return datum.image;});console.log(barLabels);var imageScale = d3.scale.ordinal()
.domain(barLabels)
.rangeRoundBands([0, w], 0.1);// divides bands equally among total width, with 10% spacing.console.log("imageScale....................");console.log(imageScale.domain());
.
.var xPos = d3.mouse(this)[0];xScale.invert(xPos);
解决办法
.on("click", function(d,i) {
var xPos = d3.mouse(this)[0];
console.log("Clicked at " + xPos);
//console.log(imageScale.invert(xPos));
var leftEdges = imageScale.range();
var width = imageScale.rangeBand();
var j;
for(j=0; xPos > (leftEdges[j] + width); j++) {}
//do nothing, just increment j until case fails
console.log("Clicked on " + imageScale.domain()[j]);
});
-----------------------------------------------------
转载请注明来源此处
原地址:#
发表