我正在使用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。但没有任何作用 - 最小值是静态值或零!任何帮助将不胜感激。
答案 0 :(得分:3)
目前在库自己的API中无法做到这一点。您需要编写一些JS来迭代您的值并手动找到最小值/最大值。这可以在plot / redraw调用之外,或者在processRawData钩子中完成,如果你不断添加值和重绘,这可能会更好。
解决这个问题实际上是一个活跃的项目,我希望在未来2-3周内将其合并到Github主分支中。因此,根据您是否能够等待,并且愿意使用不太稳定的代码,这是另一种选择。
答案 1 :(得分:0)
DNS' answer中提及的更改后的当前答案已实施:
在zero: false
选项中设置bar
。
区域和条形图通常从零开始,无论数据的范围如何。这是因为它们通过大小传达信息,并且从不同的值开始会扭曲它们的含义。但是,如果填充纯粹是出于装饰目的,“零”允许您覆盖此行为。对于实线和条形,它默认为true;将其设置为false会告诉系列使用与未填充行相同的自动缩放。