【问题标题】:Update axes when toggling series jquery flot切换系列 jquery flot 时更新轴
【发布时间】:2013-11-06 01:15:35
【问题描述】:
我有一个包含 5 个系列的图表,我可以按照 here 的讨论来切换图例,但是当切换系列时,它们会被删除,但轴不会更新。我在 setData() 之后和 draw() 之前添加了 setupGrid() 但没有结果。所以我认为 Flot 仍然计算隐藏的系列,所以我尝试通过代码并查找 setupGrid 并在每个系列循环中添加了一个检查,以便如果该行被隐藏并且只是搞砸了整个循环,则循环继续计算。然后我在计算 x/y max/min 时添加了一个检查,这给出了同样的问题。
我应该怎么做才能正确计算轴?
【问题讨论】:
标签:
javascript
jquery
flot
【解决方案1】:
你是对的,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();
}
更新小提琴here。