切换系列jquery flot时更新轴

时间:2013-11-05 15:51:06

标签: javascript jquery flot

我有一个包含5个系列的图表,我可以按照所讨论的here来切换图例。但是当切换系列时,它们会被移除,但轴不会更新。我在setData()之后和draw()之前添加了setupGrid()但没有结果。所以我认为Flot仍然计算隐藏的系列,所以我试图通过代码并查找setupGrid,并在每个系列循环中添加一个检查,以便循环继续,如果该行被隐藏,这只是搞砸了整个计算。然后我在计算x / y max / min时添加了一个检查,并给出了同样的问题。

我该怎么做才能让它正确地调整轴?

1 个答案:

答案 0 :(得分:3)

你是对的,flot在计算系列自动缩放时没有考虑系列的可见性。在版本0.8.1中,当设置datamax / datamin属性时,罪魁祸首是在第1177行附近。如果它永远不会被绘制,它可以跳过该系列:

if (s.lines.show == false &&
    s.points.show == false &&
    s.bars.show == false) continue;

但是,我担心这会破坏引入其他剧情类型的插件。


所以反而,我只是屏蔽数据以使自动缩放工作:

togglePlot = function(seriesIdx)
{
  var someData = somePlot.getData();  
  someData[seriesIdx].lines.show = !someData[seriesIdx].lines.show;  
  if (!someData[seriesIdx].lines.show){
      someData[seriesIdx].tempData = someData[seriesIdx].data;
      someData[seriesIdx].data = [];  // store old data and blank out real data
  }
  else
  {
      someData[seriesIdx].data = someData[seriesIdx].tempData; // restore real data
  }
  somePlot.setData(someData);
  somePlot.setupGrid();
  somePlot.draw();
}

更新了小提琴here