drawBackground钩子去了哪里?或者为什么我的最后一点是错误的颜色

时间:2012-09-14 19:29:13

标签: plugins flot

为了尝试解决this问题,我开始考虑为flot编写一个插件来完成我需要的工作。它看起来令人惊讶地直截了当,但我遇到了一个小问题。我首先使用绘制钩子绘制我的轴(注意:我知道这段代码需要一些错误检查,以确保原点不在图表之外)

 function draw(plot, ctx) {
    var offset = plot.getPlotOffset();
    var origin = plot.pointOffset({ x: 0, y: 0 });
    ctx.moveTo(offset.left, origin.top);
    ctx.lineTo(plot.width() + offset.left, origin.top);
    ctx.stroke();
    ctx.moveTo(origin.left, offset.top);
    ctx.lineTo(origin.left, plot.height() + offset.top);
    ctx.stroke();
}

这样做有两个小障碍。第一个也是最重要的是,由于某些原因,它使我的数据系列的最后一点变色!见这里:

enter image description here

右上角的点变黑了。通过单步执行代码,我可以观察到只有在绘制轴时才会发生这种情况。在调用绘制代码之前,该点是正确的颜色。所以我认为它与第一个“笔画”上的绘图有关。由于某种原因,它似乎然后将黑色应用到最后一点。关于如何解决这个问题的任何想法?

第二个问题是,只有在flot绘制了其他所有内容(包括数据点)之后才调用此代码,这意味着我的行显示在点的顶部而不是在它们下面。对于那些非常接近垂直轴的点,这只是一个问题。看一下flot文档,它提到了一个drawBackground钩子,但这似乎并不存在。我尝试使用它,它抱怨drawBackground为null。所以发生了什么事?是否有更好的地方可以勾选并绘制我的轴?我想在flot计算出绘图区域的大小之后绘制并绘制第一系列数据点之前绘制。

1 个答案:

答案 0 :(得分:1)

目前网站上的API文档与最新发布的版本(0.7)不符。要使用backgroundDraw挂钩,您需要更新版本的flot,直接来自他们的github repository。最新版本很好,但this commit之后的任何内容都可行。