Javascript flot图中堆叠线图的工具提示问题

Javascript flot图中堆叠线图的工具提示问题,javascript,jquery,flot,Javascript,Jquery,Flot,我正在使用堆叠线图,但我面临着悬停工具提示的问题。有些值为0。我只想忽略0值点上的工具提示,因为它们会覆盖值大于0的点 我曾尝试从数据数组中删除0个值点,但这样做并不能正确渲染图形 请看一下这个: 当使用flot.tooltip插件时,您可以将content属性设置为一个函数,该函数返回工具提示字符串,如果您不想显示工具提示(请参见),则返回false,如下所示: 工具提示:{ 内容:函数(标签、x、y、数据点){ 如果(y==0){ 返回false; } 否则{ //更改此项以获得所需的格式

我正在使用堆叠线图,但我面临着悬停工具提示的问题。有些值为0。我只想忽略0值点上的工具提示,因为它们会覆盖值大于0的点

我曾尝试从数据数组中删除0个值点,但这样做并不能正确渲染图形

请看一下这个:


当使用
flot.tooltip
插件时,您可以将
content
属性设置为一个函数,该函数返回工具提示字符串,如果您不想显示工具提示(请参见),则返回false,如下所示:

工具提示:{
内容:函数(标签、x、y、数据点){
如果(y==0){
返回false;
}
否则{
//更改此项以获得所需的格式
返回(新日期(x)).toString()+标签+x;
}
},
使用
plothover
事件手动生成工具提示时,请在显示工具提示之前检查该值,如下所示:

$(“#占位符”).bind(“plothover”,函数(事件、位置、项目){
//检查值是否为零
如果(项和项数据点[1]!=0){
var x=项。数据点[0]。固定(2),
y=item.datapoint[1].toFixed(2);
//更改此项以获得所需的格式
$(“#工具提示”).html(x+item.series.label+y)
.css({top:item.pageY+5,left:item.pageX+5});
}否则{
$(“#工具提示”).hide();
}
});

我已经分析了代码库,下面是我打算进行的更改。

@-607,7+607,8@@根据麻省理工学院许可证获得许可。
可点击:false,
可悬停:错误,
autoHighlight:true,//鼠标靠近时高亮显示
-mouseActiveRadius:10//鼠标可以离激活项目多远
+mouseActiveRadius:10,//鼠标可以离激活项目多远
+ignoreZeroValuePoints:false
},
互动:{
redrawOverlayInterval:1000/60//更新之间的时间,-1表示在同一流程中
@@-2873,8+2874,11@@根据MIT许可证获得许可。

//使用它有点暴力,但您可以为悬停事件定义自己的回调,并根据数据值显示/隐藏整个工具提示元素。是的,我正在这样做,但它通常在项目参数中发送0个值点。我使用了此$('#graph')。绑定(“plothover”,函数(事件、位置、项目)在上面的例子中,它主要在itemri中发送0个值点,但首先我没有使用flot.tooltip,我使用的是第二种方式,即手动。我尝试过为0个值点添加条件,但没有效果,因为它在很多情况下都没有显示工具提示。问题是,当flot拾取点时,我们必须限制忽略0个值当鼠标悬停在图形上时。你能从你的页面中显示相关代码吗(如图所示)?我已经解决了这个问题,但我已经在flot.js中解决了这个问题。让我添加答案
@@ -607,7 +607,8 @@ Licensed under the MIT license.
                 clickable: false,
                 hoverable: false,
                 autoHighlight: true, // highlight in case mouse is near
-                    mouseActiveRadius: 10 // how far the mouse can be away to activate an item
+                    mouseActiveRadius: 10, // how far the mouse can be away to activate an item
+                    ignoreZeroValuePoints: false
                 },
                 interaction: {
                     redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow
 @@ -2873,8 +2874,11 @@ Licensed under the MIT license.
                         // use <= to ensure last point takes precedence
                         // (last generally means on top of)
                         if (dist < smallestDistance) {
-                            smallestDistance = dist;
-                            item = [i, j / ps];
+                            jps = j / ps;
+                            if(!options.grid.ignoreZeroValuePoints || series[i].data[series[i].datapoints.points.slice(jps * series[i].datapoints.pointsize, (jps + 1) * series[i].datapoints.pointsize)[0]][1] != 0){
+                              smallestDistance = dist;
+                              item = [i, jps];
+                            }
                         }
                     }
                 }