Example #1
0
 public void Axis(AxisLimits limits, int xAxisIndex = 0, int yAxisIndex = 0) => throw new NotImplementedException();
Example #2
0
        /// <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));
        }
Example #3
0
 /// <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);
Example #4
0
 /// <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);
 }