2

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

我应该怎么做才能正确计算轴?

4

1 回答 1

3

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

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();
}

在这里更新了小提琴。

于 2013-11-05T17:15:35.333 回答