예제 #1
0
        /// <summary>
        /// Returns a y-axis that is suitable for drawing this plot.
        /// </summary>
        /// <returns>A suitable y-axis.</returns>
        public Axis SuggestYAxis()
        {
            if (IsStacked)
            {
                double    tmpMax      = 0.0f;
                ArrayList adapterList = new ArrayList();

                HistogramPlot currentPlot = this;
                do
                {
                    adapterList.Add(new SequenceAdapter(
                                        currentPlot.DataSource,
                                        currentPlot.DataMember,
                                        currentPlot.OrdinateData,
                                        currentPlot.AbscissaData)
                                    );
                } while ((currentPlot = currentPlot.stackedTo) != null);

                SequenceAdapter[] adapters = (SequenceAdapter[])adapterList.ToArray(typeof(SequenceAdapter));

                for (int i = 0; i < adapters[0].Count; ++i)
                {
                    double tmpHeight = 0.0f;
                    for (int j = 0; j < adapters.Length; ++j)
                    {
                        tmpHeight += adapters[j][i].Y;
                    }
                    tmpMax = Math.Max(tmpMax, tmpHeight);
                }

                Axis a = new LinearAxis(0.0, tmpMax);
                // TODO make 0.08 a parameter.
                a.IncreaseRange(0.08);
                return(a);
            }
            else
            {
                SequenceAdapter data = new SequenceAdapter(DataSource, DataMember, OrdinateData, AbscissaData);
                return(data.SuggestYAxis());
            }
        }
예제 #2
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 (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(rows_, out min_l, out max_l, (string)lowData_);
                    Utils.RowArrayMinMax(rows_, out min_h, out max_h, (string)highData_);
                }

                Axis a = new LinearAxis(min_l, max_h);

                a.IncreaseRange(0.08);
                return(a);
            }
예제 #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 (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 (rows_, out min_l, out max_l, (string)lowData_);
                    Utils.RowArrayMinMax (rows_, out min_h, out max_h, (string)highData_);
                }

                Axis a = new LinearAxis (min_l, max_h);
                a.IncreaseRange (0.08);
                return a;
            }
예제 #4
0
        /// <summary>
        /// Returns a y-axis that is suitable for drawing this plot.
        /// </summary>
        /// <returns>A suitable y-axis.</returns>
        public Axis SuggestYAxis()
        {
            if (IsStacked) {
                double tmpMax = 0.0f;
                ArrayList adapterList = new ArrayList();

                HistogramPlot currentPlot = this;
                do {
                    adapterList.Add (new SequenceAdapter (
                        currentPlot.DataSource,
                        currentPlot.DataMember,
                        currentPlot.OrdinateData,
                        currentPlot.AbscissaData)
                    );
                } while ((currentPlot = currentPlot.stackedTo) != null);

                SequenceAdapter[] adapters = (SequenceAdapter[])adapterList.ToArray (typeof(SequenceAdapter));

                for (int i=0; i<adapters[0].Count; ++i) {
                    double tmpHeight = 0.0f;
                    for (int j=0; j<adapters.Length; ++j) {
                        tmpHeight += adapters[j][i].Y;
                    }
                    tmpMax = Math.Max (tmpMax, tmpHeight);
                }

                Axis a = new LinearAxis (0.0,tmpMax);
                // TODO make 0.08 a parameter.
                a.IncreaseRange (0.08);
                return a;
            }
            else {
                SequenceAdapter data = new SequenceAdapter (DataSource, DataMember, OrdinateData, AbscissaData);
                return data.SuggestYAxis();
            }
        }