如何告诉FLOT不要在条形图中使用0作为Y轴的默认最小值?

时间:2012-07-16 21:33:38

标签: flot

我正在使用FLOT图表库来绘制随时间消耗的卡路里。我希望y轴使用自动缩放(只显示数据集中+/-最小值和最大值的值)。

但是,图表始终使用0作为条形图的最小值,而不是自动缩放y轴值。这是我的代码:

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。但没有任何作用 - 最小值是静态值或零!任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

目前在库自己的API中无法做到这一点。您需要编写一些JS来迭代您的值并手动找到最小值/最大值。这可以在plot / redraw调用之外,或者在processRawData钩子中完成,如果你不断添加值和重绘,这可能会更好。

解决这个问题实际上是一个活跃的项目,我希望在未来2-3周内将其合并到Github主分支中。因此,根据您是否能够等待,并且愿意使用不太稳定的代码,这是另一种选择。

答案 1 :(得分:0)

DNS' answer中提及的更改后的当前答案已实施:

zero: false选项中设置bar

来自official documentation

  

区域和条形图通常从零开始,无论数据的范围如何。这是因为它们通过大小传达信息,并且从不同的值开始会扭曲它们的含义。但是,如果填充纯粹是出于装饰目的,“零”允许您覆盖此行为。对于实线和条形,它默认为true;将其设置为false会告诉系列使用与未填充行相同的自动缩放。