Как отображать подсказки на круговой диаграмме jqplot
У меня есть круговая диаграмма jqplot с легендой, и я бы хотел, чтобы текст легенды отображался как подсказка, когда мышь зависала на пирогах. Я не знаю, как это сделать. Есть ли у кого-нибудь опыт подобной работы?
пример кода:
$(document).ready(function(){
var data = [['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14],['Out of home', 16],['Commuting', 7], ['Orientation', 9]];
var plot1 = jQuery.jqplot ('chart1', [data],
{
seriesDefaults: {
renderer: jQuery.jqplot.PieRenderer,
rendererOptions: {
showDataLabels: true
}
},
legend: { show:true, location: 'e' }
}
);
});
Ответы
Ответ 1
Вам нужно привязать данные jqplot highligh и unhighligh, захватить данные, которые вы хотите показать, и установить диаграмму, содержащую атрибут заголовка div.
Следующий код показывает заголовок в формате "x: y", где x - метка легенды, а y - значение:
var plot = $.jqplot('plotDivId',...);
$("#plotDivId").bind('jqplotDataHighlight', function(ev, seriesIndex, pointIndex, data) {
var $this = $(this);
$this.attr('title', data[0] + ": " + data[1]);
});
$("#plotDivId").bind('jqplotDataUnhighlight', function(ev, seriesIndex, pointIndex, data) {
var $this = $(this);
$this.attr('title',"");
});
Эта часть кода используется в моей системе, которая работает без проблем.
Ответ 2
Я использую последнюю версию jqPlot и получаю всплывающие подсказки для работы, просто используя следующий раздел "seriesDefaults":
highlighter: {
show: true,
formatString:'%s',
tooltipLocation:'sw',
useAxesFormatters:false
}
Важной частью является "useAxesFormatters: false", поскольку на круговой диаграмме нет осей. Не стесняйтесь менять "formatString" на то, что вы хотите, но для меня просто "% s" показывает ту же строку, что и в легендах.
Ответ 3
Я использую версию плагина ярлыка по следующей ссылке:
https://github.com/tryolabs/jqplot-highlighter
Параметры, которые я использую:
highlighter: {
show:true,
tooltipLocation: 'n',
tooltipAxes: 'pieref', // exclusive to this version
tooltipAxisX: 20, // exclusive to this version
tooltipAxisY: 20, // exclusive to this version
useAxesFormatters: false,
formatString:'%s, %P',
}
Новые параметры обеспечивают фиксированное местоположение, где появится всплывающая подсказка. Я предпочитаю поместить его в верхнем левом углу, чтобы избежать проблем с изменением размера контейнера div.
Ответ 4
Я не верю, что для этого есть встроенный. Вам нужно будет привязать обработчики к событиям jqplotDataHighlight и jqplotDataUnhighlight. См. Пример внизу страница. Это делается с помощью пузырьковых графиков, но оно также должно переводить на сюжетные диаграммы.
Ответ 5
Так как я не мог заставить Highlighter работать - он не отображал ничего для меня на круговой диаграмме - у меня получилось решение отобразить всплывающую подсказку браузера на основе события highligter.
var plot1 = jQuery.jqplot ('chart1', [data], {
seriesDefaults: {
renderer: jQuery.jqplot.PieRenderer
}
}
);
$('#chart1').bind('jqplotDataHighlight', function (ev, seriesIndex, pointIndex, data) {
document.getElementById('chart1').title = data;
//alert('series: '+seriesIndex+', point: '+pointIndex+', data: '+data);
});