/// <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)); }
/// <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)); }
/// <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); }
/// <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)); } } }