2

FLOT グラフ作成ライブラリを使用して、経時的に消費されるカロリーをプロットしています。Y軸で自動スケーリングを使用したいと思います(データセットの最小値と最大値の+/-の値を表示するだけです)。

ただし、グラフは、y 軸の値を自動スケーリングするのではなく、棒グラフの最小値として常に 0 を使用します。これが私のコードです:

function DrawCalorieChart(calorieData) {
    plot = $.plot($("#CalorieHistoryChart"), [calorieData],
    {
        series: {
            bars: { show: true, barWidth: 0.8, align: "center" }
        },
        legend: {
            show: false
        },
        xaxis: { tickDecimals: 0, tickSize: 1, mode: "categories", tickLength: 0 },
        yaxis: { autoscaleMargin: 0.025 },
        grid: { labelMargin: 10 }
    });
}

最小値を手動で設定できますが、問題は、新しいデータが入力された後の最小値がわからないことです。yaxis 仕様を完全に削除し、autoscaleMargin を設定して (示されているように)、min を null に設定しようとしました。しかし、何も機能しません - 最小値は静的な値またはゼロです! どんな助けでも大歓迎です。

4

2 に答える 2

3

現在、ライブラリ独自の API 内でこれを行う方法はありません。値を繰り返し処理し、最小/最大を手動で見つけるために、いくつかの JS を作成する必要があります。これは、plot/redraw 呼び出しの外部、または processRawData フックで実行できます。これは、常に値を追加して再描画している場合にうまく機能する可能性があります。

これに対処することは、実際には進行中のプロジェクトであり、今後 2 ~ 3 週間以内に Github マスター ブランチにマージされる予定です。したがって、待つことができるかどうか、および安定性の低いコードを使用する意思があるかどうかに応じて、それは別のオプションです。

于 2012-07-16T23:41:09.823 に答える
0

DNSの回答に記載されている変更が実装された後の現在の回答:

オプションで設定zero: falsebarます。

公式ドキュメントから:

面グラフと棒グラフは通常、データの範囲に関係なくゼロから始まります。これは、サイズによって情報が伝達され、異なる値から始めると意味が歪むためです。ただし、塗りつぶしが純粋に装飾目的である場合は、「ゼロ」を指定すると、この動作をオーバーライドできます。塗りつぶされた線と棒のデフォルトは true です。false に設定すると、塗りつぶされていない線と同じ自動スケーリングを使用するようシリーズに指示されます。

于 2016-08-05T15:06:23.930 に答える