2012-01-07 96 views

回答

3

不幸的是,flot并没有向用户展示饼图突出显示代码。因此,我们非常不走运了,但你在页面上的适当位置合成单击事件什么可能工作:

$("#highligher").click(function() { 
    var e = jQuery.Event('click'); 
    e.pageX = 250; //add a made up x/y coordinate to the click event 
    e.pageY = 250; 
    $('#plot canvas:first').trigger(e); //trigger the click event on the canvas 
}); 

这是在行动:http://jsfiddle.net/ryleyb/mHJm5/

问题是你必须知道您想突出显示的切片的位置。如果图形是静态的,这将很容易设置。如果它是一个动态图,你必须挖掘馅饼代码的来源以找出如何计算饼图片的位置。在这种情况下,可能更容易拥有所有饼图函数的副本并手动绘制饼图覆盖图。

+0

仍然显示为2013年三月海军报的bug票的有效期在这里跟踪这个问题:https://github.com/flot/flot/issues/752 – 2013-03-06 19:45:10

0

我们在图表之外保持选择状态(作为骨干模型)。当发生选择事件(点击)时,我们在模型中设置选定的切片。选择更改后,我们使用所选饼图切片的选择颜色刷新图表。

var data = []; 
var color = slice.index == selected ? '#FF0000' : '#0000FF'; 
data.push({label:slice.Label,data:slice.Value,color:color}); 

上面的代码片段对所有未选择的片使用蓝色,对于选定的片使用蓝色。你的颜色逻辑会更复杂。

注意:您也可以使用rgba CSS作为颜色,这可以带来非常好的效果。例如:

var color = slice.index == selected ? 'rgba(0,0,255,1)' : 'rgba(0,0,255,0.5)'; 
2

通过改变一些事情刚刚得到这个工作...

我jquery.flot.pie.js改变highlightunhighlightpieHighlightpieUnhighlight

然后,在jquery.flot.pie.js这两条线后...

plot.hooks.processOptions.push(function(plot, options) { 
      if (options.series.pie.show) { 

我说...

   plot.highlight = pieHighlight; 
       plot.unhighlight = pieUnhighlight; 
+0

事实上,派克插件不公开其自定义突出/ unhighlight方法是一个错误。这是一个简单的解决方案。此外,还有一个对于flot 0.9的pull请求完全是这样,所以如果0.9被释放,highlight/unhighlight将起作用 – Achronos 2015-07-14 20:33:20

+0

仍然没有在插件的版本1.1中实现。如答案中所示手动实施它。 – Raidri 2016-04-13 09:13:06