Commit 22eb1489 authored by olau@iola.dk's avatar olau@iola.dk

Added support for skipping points outside the specified range when autoscaling

git-svn-id: https://flot.googlecode.com/svn/trunk@110 1e0a6537-2640-0410-bfb7-f154510ff394
parent 919b9c75
...@@ -166,6 +166,7 @@ Customizing the axes ...@@ -166,6 +166,7 @@ Customizing the axes
min: null or number min: null or number
max: null or number max: null or number
autoscaleMargin: null or number autoscaleMargin: null or number
autoscaleSkipPointsOutside: boolean
labelWidth: null or number labelWidth: null or number
labelHeight: null or number labelHeight: null or number
...@@ -192,6 +193,12 @@ specified, the plot will furthermore extend the axis end-point to the ...@@ -192,6 +193,12 @@ specified, the plot will furthermore extend the axis end-point to the
nearest whole tick. The default value is "null" for the x axis and nearest whole tick. The default value is "null" for the x axis and
0.02 for the y axis which seems appropriate for most cases. 0.02 for the y axis which seems appropriate for most cases.
If you set a range on an axis with min/max and then set
"autoscaleSkipPointsOutside" to true, the autoscale algorithm will
skip points that are outside this range when computing the scale for
the other axis. Otherwise all points input to Flot are always
considered.
"labelWidth" and "labelHeight" specifies the maximum size of the tick "labelWidth" and "labelHeight" specifies the maximum size of the tick
labels in pixels. They're useful in case you need to align several labels in pixels. They're useful in case you need to align several
plots. plots.
......
...@@ -6,6 +6,9 @@ New features: ...@@ -6,6 +6,9 @@ New features:
- Added support for disabling interactivity for specific data series - Added support for disabling interactivity for specific data series
(request from Ronald Schouten and Steve Upton). (request from Ronald Schouten and Steve Upton).
- Added support for having the autoscale algorithm skip points outside
an axis range (autoscaleSkipPointsOutside on an axis).
Bug fixes: Bug fixes:
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
min: null, // min. value to show, null means set automatically min: null, // min. value to show, null means set automatically
max: null, // max. value to show, null means set automatically max: null, // max. value to show, null means set automatically
autoscaleMargin: null, // margin in % to add if auto-setting min/max autoscaleMargin: null, // margin in % to add if auto-setting min/max
autoscaleSkipPointsOutside: null,
ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks
tickFormatter: null, // fn: number -> string tickFormatter: null, // fn: number -> string
labelWidth: null, // size of tick labels in pixels labelWidth: null, // size of tick labels in pixels
...@@ -266,6 +267,9 @@ ...@@ -266,6 +267,9 @@
for (axis in axes) { for (axis in axes) {
axes[axis].datamin = topSentry; axes[axis].datamin = topSentry;
axes[axis].datamax = bottomSentry; axes[axis].datamax = bottomSentry;
axes[axis].min = options[axis].min;
axes[axis].max = options[axis].max;
axes[axis].skipoutside = options[axis].autoscaleSkipPointsOutside;
axes[axis].used = false; axes[axis].used = false;
} }
...@@ -280,7 +284,7 @@ ...@@ -280,7 +284,7 @@
mindelta = series[i].bars.align == "left" ? 0 : -series[i].bars.barWidth/2; mindelta = series[i].bars.align == "left" ? 0 : -series[i].bars.barWidth/2;
maxdelta = mindelta + series[i].bars.barWidth; maxdelta = mindelta + series[i].bars.barWidth;
} }
axisx.used = axisy.used = true; axisx.used = axisy.used = true;
for (var j = 0; j < data.length; ++j) { for (var j = 0; j < data.length; ++j) {
if (data[j] == null) if (data[j] == null)
...@@ -290,6 +294,12 @@ ...@@ -290,6 +294,12 @@
// convert to number // convert to number
if (x != null && !isNaN(x = +x)) { if (x != null && !isNaN(x = +x)) {
if (axisx.skipoutside &&
((axisx.min != null && x + mindelta < axisx.min) ||
(axisx.max != null && x + maxdelta > axisx.max))) {
continue;
}
if (x + mindelta < axisx.datamin) if (x + mindelta < axisx.datamin)
axisx.datamin = x + mindelta; axisx.datamin = x + mindelta;
if (x + maxdelta > axisx.datamax) if (x + maxdelta > axisx.datamax)
...@@ -297,6 +307,11 @@ ...@@ -297,6 +307,11 @@
} }
if (y != null && !isNaN(y = +y)) { if (y != null && !isNaN(y = +y)) {
if (axisy.skipoutside &&
((axisy.min != null && y < axisy.min) ||
(axisy.max != null && y > axisy.max)))
continue;
if (y < axisy.datamin) if (y < axisy.datamin)
axisy.datamin = y; axisy.datamin = y;
if (y > axisy.datamax) if (y > axisy.datamax)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment