Flot在X轴刻度上重新缩放Y轴最小值/最大值

时间:2014-07-15 22:26:05

标签: javascript jquery flot

我有一个长的unixtime,值Array用于启动flot图表,还有一些按钮来改变比例,我似乎无法做的是让Y轴随着变化而变化X-规模。

这是一个示例图表: http://jsfiddle.net/U53vz/

var datarows = //Data Array Here
var options =  { series: { lines: { show: true }, points: { show: true } },
        grid: { hoverable: true,clickable: false, },
        xaxis: { mode: "time", min: ((new Date().getTime()) - 30*24*60*60*1000), max: new Date().getTime(), }
    };
function castPlot() {
window.PLOT = $.plot("#placeholder", [{ data: dataRows }], options
);
};

在官方示例中,缩放是自动的,并且在Y轴上未指定: http://www.flotcharts.org/flot/examples/axes-time/index.html

我能想到的唯一选择是循环数据集并在每次按下按钮时计算新的Y min / max。除非我打破一些非常明显的默认功能。

1 个答案:

答案 0 :(得分:4)

在计算y-scale时,flot不会仅查看" viewable"数据,但整个数据集。由于数据点仍然存在,因此y min / max尊重它们。所以你的选择是:

  1. 将系列数据子集下放到所需范围,然后让flot缩放x和y。
  2. 如您所知,在y轴上计算您自己的最小值/最大值。
  3. 如果您绘制得比现在更复杂(特别是如果您开始在其上设置点击/悬停事件),我还建议您切换到重绘而不是重新创建绘图。

    var opts = somePlot.getOptions();
    opts.xaxes[0].min = newXMin;
    opts.xaxes[0].max = newXMax;
    opts.yaxes[0].min = newYMin;
    opts.yaxes[0].max = newYMax;
    somePlot.setupGrid();
    somePlot.draw();
    

    <强> EDITS

    这里有一个solution