你可以結合你提到的事情來實現你想要的。使用插件中的代碼部分,您可以設置圖例的初始值,在加載時設置plotLine並在mousemove上將其刪除。
渲染初始值:
function renderInitLegendValues() {
var chart = this,
point = chart.series[0].data[2],
point2 = chart.series[1].data[2],
point3 = chart.series[2].data[2],
hoverPoints = chart.hoverPoints = [point, point2, point3],
legendOptions = chart.legend.options;
Highcharts.each(hoverPoints, function(point) {
point.series.point = point;
point.setState('hover');
});
Highcharts.each(chart.legend.allItems, function(item) {
item.legendItem.attr({
text: legendOptions.labelFormat ?
Highcharts.format(legendOptions.labelFormat, item) : legendOptions.labelFormatter.call(item)
});
});
chart.legend.render();
}
處理繪圖線(第一功能不會讓十字準線皮如果繪圖區外的鼠標移動):
Highcharts.Pointer.prototype.reset = function() {
return undefined;
};
function removeInitCrosshair(e) {
var normE = chart.pointer.normalize(e.originalEvent);
if (chart.isInsidePlot(normE.chartX - chart.plotLeft, normE.chartY - chart.plotTop)) {
chart.xAxis[0].removePlotLine('initial-crosshair');
$(this).off('mousemove', removeInitCrosshair);
}
}
實施例:http://jsfiddle.net/y58w4u9j/1/
至於導出,您可以動態定義繪圖線,懸停時設置點的狀態以及導出之前的圖例值,以便圖像將包括這些變化。
謝謝! 正如我還問在highcharts論壇的問題 - 在這裏鏈接到另一個可能的[解決方案](http://forum.highcharts.com/highstock-usage/set-crosshair-to-a-default-position-t36508 /) – kat