同时在高图表中显示多个工具提示
Showing multiple Tooltips in highcharts simultaneously
我想在Highchart中同时显示多个工具提示。基本要求是,每当鼠标悬停在系列中的某个点上时,我都需要显示悬停点半径X内所有点的工具提示。到目前为止,我已经尝试过这样的方法:http://jsfiddle.net/vmso2dbf/
$(function () {
$('#container').highcharts({
title: {
text: 'Multiple tooltips'
},
plotOptions: {
series: {
point: {
events: {
mouseOver: function (event) {
var r = 50;
var arr = [];
var chart = this.series.chart;
var currX = this.plotX;
var currY = this.plotY;
var points = this.series.points;
for(var i=0;i<points.length;i++){
var xdiff = currX - points[i].plotX;
var ydiff = currY - points[i].plotY;
var distance = Math.abs(xdiff*xdiff - ydiff*ydiff);
if(distance < r*r)
arr.push(points[i]);
}
chart.tooltip.refresh(arr);
}
}
},
}
},
tooltip: {
enabled: true,
shared : true
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});
但我需要同时使用多个工具提示,而不仅仅是一个针对所有相关点的大工具提示。如果可能的话,有没有办法让这些工具尖端根据可用空间自行对齐?Highcharts中是否有任何现有的插件/功能可以帮助我解决这个问题?
添加到代码中的一个示例是(对新代码进行了注释):
// Array for keeping track of open tooltips
var openTooltips = [];
$('#container').highcharts({
// Skipping irrelevant options
plotOptions: {
series: {
point: {
events: {
mouseOver: function (event) {
var chart = this.series.chart;
// Remove any currently open tooltips
for(var i = 0; i < openTooltips.length; i++) {
chart.container.firstChild.removeChild(openTooltips[i]);
}
// Reset array
openTooltips = [];
var r = 50;
var currX = this.plotX;
var currY = this.plotY;
var points = this.series.points;
for(var i=0;i<points.length;i++){
var xdiff = currX - points[i].plotX;
var ydiff = currY - points[i].plotY;
// Changed distance formula to use plus instead of minus
var distance = Math.abs(xdiff*xdiff + ydiff*ydiff);
if(distance < r*r) {
// Open the tooltip for the point
chart.tooltip.refresh([points[i]]);
// Clone tooltip and add it to array
openTooltips.push(this.series.chart.tooltip.label.element.cloneNode(true));
// Append tooltip to show it in chart
chart.container.firstChild.appendChild(openTooltips[openTooltips.length-1]);
}
}
}
}
},
}
},
tooltip: {
enabled: true,
shared : true,
animation: false // Disable animation to get correct tooltip positions
}
});
正如您所看到的,大多数更改都是在克隆工具提示并跟踪它们。请注意,工具提示动画已被禁用,以避免错误放置工具提示。我还把distance
公式从差改为和,这在寻找欧几里得距离时是正常的。
请参阅这个JSFiddle示例,了解它的外观和工作原理。这个答案中的工具提示代码受到了Marks关于"点击时保持工具提示显示"的回答的强烈启发。
如果您不想要一个通用的工具提示,请在工具提示块中编写以下内容。
tooltip: {
enabled: true,
shared : false
}
相关文章:
- 悬停工具提示显示详细信息 jquery
- 如何使高图工具提示显示在饼图之外
- 如何使用JS或JQuery使工具提示显示在TD悬停上
- 如何使用 d3.js 使工具提示显示在饼图扇区附近
- 如何通过 Jquery 工具提示显示图像
- 使高图工具提示显示最靠近左侧的点的信息(即在中点不更改)
- 有没有办法强制工具提示显示在输入元素的特定位置
- 高图表工具提示显示额外数据
- 在页面加载时自动对焦 dx文本框 并将 dx工具提示显示为验证消息
- 工具提示显示在第二次悬停之后
- 如何使工具提示显示在每个图像旁边
- 如何确定ng-grid中用于工具提示显示的行索引
- Imagemap:让点击区域的工具提示显示在鼠标窗口上
- 工具提示显示在随机位置
- 显示图工具提示显示x轴的最后日期值,而不是当前值
- 如何防止默认的工具提示显示在svg元素上
- twitter引导工具提示显示在modal后面
- ASP.NET 资源 resx 字符串工具提示显示帮助
- 引导工具提示显示在模态窗口后面
- 浮动工具提示显示在线形图上,而不是条形图上