fromPoints static method
Implementation
static ChartViewport fromPoints(
Iterable<double> xs,
Iterable<double> ys, {
double padding = 0.05,
}) {
var minX = double.infinity;
var maxX = double.negativeInfinity;
var minY = double.infinity;
var maxY = double.negativeInfinity;
for (final x in xs) {
if (x < minX) minX = x;
if (x > maxX) maxX = x;
}
for (final y in ys) {
if (y < minY) minY = y;
if (y > maxY) maxY = y;
}
if (minX == double.infinity) {
return const ChartViewport(minX: 0, maxX: 1, minY: 0, maxY: 1);
}
var xSpan = maxX - minX;
var ySpan = maxY - minY;
if (xSpan <= 0) {
final center = minX;
xSpan = 1;
minX = center - xSpan / 2;
maxX = center + xSpan / 2;
}
if (ySpan <= 0 || !ySpan.isFinite) {
final center = minY.isFinite ? minY : 0.0;
ySpan = center.abs() > 1e-9 ? center.abs() : 1;
minY = center - ySpan / 2;
maxY = center + ySpan / 2;
}
final xPad = xSpan * padding;
final yPad = ySpan * padding;
return ChartViewport(
minX: minX - xPad,
maxX: maxX + xPad,
minY: minY - yPad,
maxY: maxY + yPad,
);
}