Пример #1
0
            /// <summary>
            /// Calculates a suggested axis for the DataRowCollection data.
            /// </summary>
            /// <returns>the suggested axis</returns>
            public Axis Get()
            {
                double t_min = double.MaxValue;
                double t_max = double.MinValue;

                IEnumerator en = rows_[0].Table.Columns.GetEnumerator();

                while (en.MoveNext())
                {
                    string colName = ((DataColumn)en.Current).Caption;

                    if (colName == abscissaName_)
                    {
                        continue;
                    }

                    double min;
                    double max;
                    if (Utils.RowArrayMinMax(rows_, out min, out max, colName))
                    {
                        if (min < t_min)
                        {
                            t_min = min;
                        }
                        if (max > t_max)
                        {
                            t_max = max;
                        }
                    }
                }

                return(new LinearAxis(t_min, t_max));
            }
Пример #2
0
            /// <summary>
            /// Calculates a suggested axis given the data specified in the constructor.
            /// </summary>
            /// <returns>the suggested axis</returns>
            public Axis Get()
            {
                double min;
                double max;

                if (Utils.RowArrayMinMax(rows_, out min, out max, columnName_))
                {
                    if ((rows_[0])[columnName_] is DateTime)
                    {
                        return(new DateTimeAxis(min, max));
                    }
                    else
                    {
                        return(new LinearAxis(min, max));
                    }
                }

                return(new LinearAxis(0.0, 1.0));
            }
Пример #3
0
            /// <summary>
            /// Returns a y-axis that is suitable for drawing the data.
            /// </summary>
            /// <returns>A suitable y-axis.</returns>
            public Axis SuggestYAxis()
            {
                double min_l;
                double max_l;
                double min_h;
                double max_h;

                if (this.rows_ == null)
                {
                    Utils.ArrayMinMax((System.Collections.IList)lowData_, out min_l, out max_l);
                    Utils.ArrayMinMax((System.Collections.IList)highData_, out min_h, out max_h);
                }
                else
                {
                    Utils.RowArrayMinMax(this.rows_, out min_l, out max_l, (string)this.lowData_);
                    Utils.RowArrayMinMax(this.rows_, out min_h, out max_h, (string)this.highData_);
                }

                Axis a = new LinearAxis(min_l, max_h);

                a.IncreaseRange(0.08);
                return(a);
            }
Пример #4
0
            /// <summary>
            /// Returns an x-axis that is suitable for drawing the data.
            /// </summary>
            /// <returns>A suitable x-axis.</returns>
            public Axis SuggestXAxis()
            {
                double min;
                double max;
                double minStep = 0.0;

                if (this.rows_ == null)
                {
                    Utils.ArrayMinMax((System.Collections.IList) this.abscissaData_, out min, out max);

                    if (((System.Collections.IList)abscissaData_).Count > 1)
                    {
                        double first  = Utils.ToDouble(((Array)abscissaData_).GetValue(0));
                        double second = Utils.ToDouble(((Array)abscissaData_).GetValue(1));
                        minStep = Math.Abs(second - first);
                    }
                    if (((System.Collections.IList)abscissaData_).Count > 2)
                    {
                        double first  = Utils.ToDouble(((Array)abscissaData_).GetValue(1));
                        double second = Utils.ToDouble(((Array)abscissaData_).GetValue(2));
                        if (Math.Abs(second - first) < minStep)
                        {
                            minStep = Math.Abs(second - first);
                        }
                    }
                    if (((System.Collections.IList)abscissaData_)[0] is DateTime)
                    {
                        return(new DateTimeAxis(min - minStep / 2.0, max + minStep / 2.0));
                    }
                    else
                    {
                        return(new LinearAxis(min - minStep / 2.0, max + minStep / 2.0));
                    }
                }
                else
                {
                    Utils.RowArrayMinMax(this.rows_, out min, out max, (string)this.abscissaData_);

                    if (rows_.Count > 1)
                    {
                        double first  = Utils.ToDouble(rows_[0][(string)abscissaData_]);
                        double second = Utils.ToDouble(rows_[1][(string)abscissaData_]);
                        minStep = Math.Abs(second - first);
                    }
                    if (rows_.Count > 2)
                    {
                        double first  = Utils.ToDouble(rows_[1][(string)abscissaData_]);
                        double second = Utils.ToDouble(rows_[2][(string)abscissaData_]);
                        if (Math.Abs(second - first) < minStep)
                        {
                            minStep = Math.Abs(second - first);
                        }
                    }

                    if ((rows_[0])[(string)abscissaData_] is DateTime)
                    {
                        return(new DateTimeAxis(min - minStep / 2.0, max + minStep / 2.0));
                    }
                    else
                    {
                        return(new LinearAxis(min - minStep / 2.0, max + minStep / 2.0));
                    }
                }
            }