0

この問題を解決するために、必要なことを行うための 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();
}

そして、これは機能しますが、2 つの小さな障害があります。最初の最も重要なことは、何らかの理由でデータ系列の最後のポイントの色が変わることです! ここを参照してください:

ここに画像の説明を入力

右上隅の点が黒くなっています。コードをステップ実行すると、これは軸が描画されている場合にのみ発生することがわかります。私の描画コードが呼び出される前は、ポイントは正しい色です。ですから、最初の「ストローク」での描画に関係があると思います。何らかの理由で、最後のポイントに黒色を適用するようです。これを修正する方法について何か考えはありますか?

2 番目の問題は、flot が他のすべて (データ ポイントを含む) を描画した後にのみこのコードが呼び出されることです。これは、私の線がポイントの下ではなくポイントの上に表示されることを意味します。これは、垂直軸に非常に近い 2 点のみの問題です。flot のドキュメントを見ると、drawBackground フックについて言及されていますが、これは実際には存在しないようです。私はそれを使用しようとしましたが、drawBackground が null であると不平を言いました。どうしたの?そして、フックして軸を描くのに適した場所はありますか? flot がプロット領域のサイズを計算した後、最初の一連のデータ ポイントを描画する前に描画したいと考えています。

4

1 に答える 1

1

現在 Web サイトの API ドキュメントにあるものは、最新のリリース バージョン (0.7) と一致しません。フックを使用するには、新しいバージョンの flot をgithub リポジトリbackgroundDrawから直接入手する必要があります。最新バージョンは問題ありませんが、このコミット以降はすべて実行可能です。

于 2012-09-18T15:58:29.743 に答える