我在这里有一个折线图:http: //jsbin.com/ugexag/1
您可以在 jsbin 中看到,当您将鼠标悬停在一个“列”上时,每行的数据都会通过 hoverColumn() 函数显示在工具提示中。我很想找到一种方法让工具提示仅在单个数据点悬停时出现。我在 gRaphael 文档中没有看到任何关于此的内容。
我在这里有一个折线图:http: //jsbin.com/ugexag/1
您可以在 jsbin 中看到,当您将鼠标悬停在一个“列”上时,每行的数据都会通过 hoverColumn() 函数显示在工具提示中。我很想找到一种方法让工具提示仅在单个数据点悬停时出现。我在 gRaphael 文档中没有看到任何关于此的内容。
折线图演示的右下象限有一个这样的例子。我将在今天晚些时候查看它并在此处更新我发现的内容。我怀疑hoverColumn
没有被使用,或者被创造性地使用,因为当我使用它时,y
我得到的悬停事件是列上所有y
值的平均值x
。
更新:看了之后,我发现了你的发现,诀窍是只有一个演示列在两行中排成一行。如果您每年绘制一些图表,那么您的年份列肯定会在所有行上重复出现。所以这不太方便。
我测试的是(在链接的折线图演示的控制台中):
var r = Raphael("holder");
var lines = r.linechart(330,250,300,220,[
[ 1, 2, 3, 4, 5, 6, 7],[ 2, 3, 4, 5, 6, 7, 8],[9,10]
],[
[10,10,10,10,10,10,10],[20,20,20,20,20,20,20],[5,25]
],{nostroke:false, axis:"0 0 1 1", symbol: "circle", smooth: true});
lines.hoverColumn(function(){
this.tags=r.set();
for(var i=0;i<this.y.length;i++){
this.tags.push(r.tag(this.x,this.y[i],this.values[i],160,10).insertBefore(this));
}
}, function(){
this.tags && this.tags.remove();
});
这至少说明了问题所在。问题确实出hoverColumn
在文档和文档上。没有提到实际上传递给它的信息hover
几乎相同。this
因此,您可以将最后一条语句重写为:
lines.hover(function({
this.tags=r.set();
this.tags.push(r.tag(this.x,this.y,this.value,160,10).insertBefore(this));
}, function(){
this.tags && this.tags.remove();
});
请注意,value
现在是单数且不带索引,y
.
最后,您可以通过删除 a 来进一步简化它set()
:
lines.hover(function(){
this.tag = r.tag(this.x,this.y,this.value,160,10).insertBefore(this);
}, function(){
this.tag && this.tag.remove();
});