禁用NVD3 multiBarHorizontalChart中0值的工具提示
Disable tooltip for 0 value in NVD3 multiBarHorizontalChart
我将nvd3用于multiBarHorizontalChart,我需要关于如何禁用0值的工具提示的指导。
.tooltip(function(key, x, y, e) {
return '<h3>' + key + ' ' + e.point.label + '</h3>' + '<p>' + y + '</p>';
})
我正在使用这个函数来显示工具提示值。
不幸的是,我没有找到任何非破解的方法。
不那么优雅的方法是将事件tooltipShow
的原始处理程序替换为自定义处理程序,该处理程序将检查值:
var originalTooltipHandler = chart.dispatch.on("tooltipShow");
chart.dispatch.on("tooltipShow", function (e) {
// check whatever you like here
if (e.value != 0) {
// and call original handler only when needed
originalTooltipHandler.apply(this, arguments);
}
});
但是,如果您的图表已更新(例如,您期望resize
事件或允许通过单击图例更改显示的数据,所以几乎在所有情况下),这是不够的,因为当执行chart.update()
时,它将恢复原始的tooltipShow
处理程序。为了解决我们也必须覆盖chart.update()
的问题:
nv.addGraph(function () {
chart = nv.models.multiBarHorizontalChart()
// ... parameters setting here
// before data was set, `chart.update()` is not available
d3.select('#chart1 svg')
.datum(long_short_data)
.call(chart);
// now we can override
filterTooltips(chart, function (e) {
return e.value !== 0;
});
// ...
return chart;
function filterTooltips(chart, predicate) {
var originalUpdate = chart.update;
chart.update = function () {
// call to original `update()` will reset filter
originalUpdate.apply(this, arguments);
// set custom filter again
filterTooltips(chart, predicate);
};
var originalTooltipHandler = chart.dispatch.on("tooltipShow");
chart.dispatch.on("tooltipShow", function (e) {
if (predicate(e)) {
originalTooltipHandler.apply(this, arguments);
}
});
}
});
观看现场演示。
相关文章:
- d3.js Chord图的动态工具提示
- Graphiti中是否有任何工具提示功能
- "工具提示"jQuery插件坏了
- 单元格的工具提示或标题不显示超过2000个字符
- d3.js用按钮更新条形图工具提示
- 使Intro.js工具提示响应
- 画布中绘制的矩形区域的弹出工具提示
- 禁用NVD3 multiBarHorizontalChart中0值的工具提示
- NVD3.js 多条形图工具提示颜色
- NVD3.js yAxis 和工具提示的精度不同
- nvd3向多条形图添加工具提示
- 带有HTML链接的nvd3工具提示
- nvd3 LineChart工具提示不工作
- nvd3工具提示位置基于鼠标指针使用JavaScript
- 我如何添加一些文本到NVD3离散条形图的工具提示
- d3.js NVD3触发工具提示手动
- 在angular-nvd3工具提示中添加额外的字段
- nvd3.js:IE 10中闪烁的饼图工具提示
- nvd3 multiBarHorizontalChart中的工具提示位置
- NVD3 散点图的自定义 X 轴工具提示