public void Axis(AxisLimits limits, int xAxisIndex = 0, int yAxisIndex = 0) => throw new NotImplementedException();
/// <summary> /// Return the limits of the data contained by this plot (regardless of the axis limits). /// WARNING: This method iterates all data points in the plot and may be slow for large datasets. /// </summary> public AxisLimits GetDataLimits(int xAxisIndex = 0, int yAxisIndex = 0) { double xMin = double.PositiveInfinity; double xMax = double.NegativeInfinity; double yMin = double.PositiveInfinity; double yMax = double.NegativeInfinity; foreach (var plottable in GetPlottables()) { if (plottable.IsVisible == false) { continue; } bool xAxisMatch = plottable.XAxisIndex == xAxisIndex; bool yAxisMatch = plottable.YAxisIndex == yAxisIndex; if (!(xAxisMatch || yAxisMatch)) { continue; } AxisLimits limits = plottable.GetAxisLimits(); if (xAxisMatch) { if (!double.IsNaN(limits.XMin)) { xMin = Math.Min(xMin, limits.XMin); } if (!double.IsNaN(limits.XMax)) { xMax = Math.Max(xMax, limits.XMax); } } if (yAxisMatch) { if (!double.IsNaN(limits.YMin)) { yMin = Math.Min(yMin, limits.YMin); } if (!double.IsNaN(limits.YMax)) { yMax = Math.Max(yMax, limits.YMax); } } } if (double.IsPositiveInfinity(xMin)) { xMin = double.NegativeInfinity; } if (double.IsNegativeInfinity(xMax)) { xMax = double.PositiveInfinity; } if (double.IsPositiveInfinity(yMin)) { yMin = double.NegativeInfinity; } if (double.IsNegativeInfinity(yMax)) { yMax = double.PositiveInfinity; } return(new AxisLimits(xMin, xMax, yMin, yMax)); }
/// <summary> /// Set limits for a pair of axes /// </summary> /// <param name="limits">new limits</param> /// <param name="xAxisIndex">index of the axis the horizontal limits apply to</param> /// <param name="yAxisIndex">index of the axis the vertical limits apply to</param> public void SetAxisLimits(AxisLimits limits, int xAxisIndex = 0, int yAxisIndex = 0) => settings.AxisSet(limits, xAxisIndex, yAxisIndex);
/// <summary> /// Define axis limits for a particuar axis /// </summary> public void AxisSet(AxisLimits limits, int xAxisIndex = 0, int yAxisIndex = 0) { GetXAxis(xAxisIndex).Dims.SetAxis(limits.XMin, limits.XMax); GetYAxis(yAxisIndex).Dims.SetAxis(limits.YMin, limits.YMax); }