public virtual void OnClick(View v)
            {
                string seriesTitle = "Series " + (outerInstance.mDataset.SeriesCount + 1);
                // create a new series of data
                XYSeries series = new XYSeries(seriesTitle);

                outerInstance.mDataset.AddSeries(series);
                outerInstance.mCurrentSeries = series;
                // create a new renderer for the new series
                XYSeriesRenderer renderer = new XYSeriesRenderer();

                outerInstance.mRenderer.AddSeriesRenderer(renderer);
                // set some renderer properties
                renderer.PointStyle                 = global::AChartEngine.Charts.PointStyle.Circle;
                renderer.FillPoints                 = true;
                renderer.DisplayChartValues         = true;
                renderer.DisplayChartValuesDistance = 10;
                outerInstance.mCurrentRenderer      = renderer;
                outerInstance.SeriesWidgetsEnabled  = true;

                outerInstance.mCurrentSeries.Add(1, 2);
                outerInstance.mCurrentSeries.Add(2, 3);
                outerInstance.mCurrentSeries.Add(3, 0.5);
                outerInstance.mCurrentSeries.Add(4, -1);
                outerInstance.mCurrentSeries.Add(5, 2.5);
                outerInstance.mCurrentSeries.Add(6, 3.5);
                outerInstance.mCurrentSeries.Add(7, 2.85);
                outerInstance.mCurrentSeries.Add(8, 3.25);
                outerInstance.mCurrentSeries.Add(9, 4.25);
                outerInstance.mCurrentSeries.Add(10, 3.75);
                outerInstance.mRenderer.SetRange(new double[] { 0.5, 10.5, -1.5, 4.75 });
                outerInstance.mChartView.Repaint();
            }
示例#2
0
 protected override void OnRestoreInstanceState(Android.OS.Bundle savedInstanceState)
 {
     base.OnRestoreInstanceState(savedInstanceState);
     mDataset         = savedInstanceState.GetSerializable("dataset") as XYMultipleSeriesDataset;
     mRenderer        = savedInstanceState.GetSerializable("renderer") as XYMultipleSeriesRenderer;
     mCurrentSeries   = savedInstanceState.GetSerializable("current_series") as XYSeries;
     mCurrentRenderer = savedInstanceState.GetSerializable("current_renderer") as XYSeriesRenderer;
 }
 public static XYDataset extractRowFromHeatMapDataset(HeatMapDataset dataset, int row, IComparable seriesName)
 {
   XYSeries series = new XYSeries(seriesName);
   int xsampleCount = dataset.getXSampleCount();
   for (int index = 0; index < xsampleCount; ++index)
     series.add(dataset.getXValue(index), dataset.getZValue(index, row));
   return (XYDataset) new XYSeriesCollection(series);
 }
 public static XYDataset extractColumnFromHeatMapDataset(HeatMapDataset dataset, int column, IComparable seriesName)
 {
   XYSeries series = new XYSeries(seriesName);
   int ysampleCount = dataset.getYSampleCount();
   for (int index = 0; index < ysampleCount; ++index)
     series.add(dataset.getYValue(index), dataset.getZValue(column, index));
   return (XYDataset) new XYSeriesCollection(series);
 }
示例#5
0
        public XYSeries SeriesCreate(string name)
        {
            XYSeries series = new XYSeries(name);

            for (int i = 0; i < db.Count(); i++)
            {
                series.Add(i, db.readData(name, i));
            }
            return(series);
        }
示例#6
0
 protected override void OnRestoreInstanceState(Bundle savedState)
 {
     base.OnRestoreInstanceState(savedState);
     // restore the current data, for instance when changing the screen
     // orientation
     mDataset         = (XYMultipleSeriesDataset)savedState.GetSerializable("dataset");
     mRenderer        = (XYMultipleSeriesRenderer)savedState.GetSerializable("renderer");
     mCurrentSeries   = (XYSeries)savedState.GetSerializable("current_series");
     mCurrentRenderer = (XYSeriesRenderer)savedState.GetSerializable("current_renderer");
 }
 public XYSeriesCollection(XYSeries series)
 {
   XYSeriesCollection seriesCollection = this;
   this.data = (List) new ArrayList();
   this.intervalDelegate = new IntervalXYDelegate((XYDataset) this, false);
   this.addChangeListener((DatasetChangeListener) this.intervalDelegate);
   if (series == null)
     return;
   this.data.add((object) series);
   series.addChangeListener((SeriesChangeListener) this);
 }
        private static void FillGraph(UltraChart ucControl, DataTable dtSource, string sLabel)
        {
            XYSeries series1 = new XYSeries();

            series1.Label = sLabel;
            foreach (DataRow r in dtSource.Rows)
            {
                series1.Points.Add(new XYDataPoint(Convert.ToDouble(r[0].ToString()), Convert.ToDouble(r[1].ToString()), "", false));
            }
            ucControl.Series.Add(series1);
        }
	  public virtual void addXYSeries(XYMultipleSeriesDataset dataset, string[] titles, IList<double[]> xValues, IList<double[]> yValues, int scale)
	  {
		int length = titles.Length;
		for (int i = 0; i < length; i++)
		{
		  XYSeries series = new XYSeries(titles[i], scale);
		  double[] xV = xValues[i];
		  double[] yV = yValues[i];
		  int seriesLength = xV.Length;
		  for (int k = 0; k < seriesLength; k++)
		  {
			series.add(xV[k], yV[k]);
		  }
		  dataset.addSeries(series);
		}
	  }
示例#10
0
        private XYMultipleSeriesDataset GetDemoDataset()
        {
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            const int nr = 10;
            Random    r  = new Random();

            for (int i = 0; i < SERIES_NR; i++)
            {
                XYSeries series = new XYSeries("Demo series " + (i + 1));
                for (int k = 0; k < nr; k++)
                {
                    series.Add(k, 20 + r.Next() % 100);
                }
                dataset.AddSeries(series);
            }
            return(dataset);
        }
示例#11
0
        public virtual void addXYSeries(XYMultipleSeriesDataset dataset, string[] titles, IList <double[]> xValues, IList <double[]> yValues, int scale)
        {
            int length = titles.Length;

            for (int i = 0; i < length; i++)
            {
                XYSeries series       = new XYSeries(titles[i], scale);
                double[] xV           = xValues[i];
                double[] yV           = yValues[i];
                int      seriesLength = xV.Length;
                for (int k = 0; k < seriesLength; k++)
                {
                    series.add(xV[k], yV[k]);
                }
                dataset.addSeries(series);
            }
        }
示例#12
0
        public void AddXYSeries(XYMultipleSeriesDataset dataset, String[] titles, IList <double[]> xValues, IList <double[]> yValues, int scale)
        {
            int length = titles.Length;

            for (int i = 0; i < length; i++)
            {
                XYSeries series       = new XYSeries(titles[i], scale);
                double[] xV           = xValues[i];
                double[] yV           = yValues[i];
                int      seriesLength = xV.Length;
                for (int j = 0; j < seriesLength; j++)
                {
                    series.Add(xV[j], yV[j]);
                }
                dataset.AddSeries(series);
            }
        }
 void CreateSeries(XYSeries series1, XYSeries series2)
 {
     series1.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState;
     series2.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState;
     chart.Diagram.Series.Clear();
     chart.Diagram.Series.Add(series1);
     PrepareSeries1(series1);
     chart.Diagram.Series.Add(series2);
     PrepareSeries2(series2);
     if (lbSeries2AxisX.SelectedIndex == 1)
     {
         XYDiagram2D.SetSeriesAxisX(SecondSeries, SecondaryAxisX);
     }
     if (lbSeries2AxisY.SelectedIndex == 1)
     {
         XYDiagram2D.SetSeriesAxisY(SecondSeries, SecondaryAxisY);
     }
 }
        /// <summary>
        /// Executes the chart demo.
        /// </summary>
        /// <param name="context"> the context </param>
        /// <returns> the built intent </returns>
        public override Intent Execute(Context context)
        {
            string[]         titles = new string[] { "Crete", "Corfu", "Thassos", "Skiathos" };
            IList <double[]> x      = new List <double[]>();

            for (int i = 0; i < titles.Length; i++)
            {
                x.Add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            }
            IList <double[]> values = new List <double[]>();

            values.Add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2, 13.9 });
            values.Add(new double[] { 10, 10, 12, 15, 20, 24, 26, 26, 23, 18, 14, 11 });
            values.Add(new double[] { 5, 5.3, 8, 12, 17, 22, 24.2, 24, 19, 15, 9, 6 });
            values.Add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 10 });
            int[]                    colors   = new int[] { Color.Blue, Color.Green, Color.Cyan, Color.Yellow };
            PointStyle[]             styles   = new PointStyle[] { PointStyle.Circle, PointStyle.Diamond, PointStyle.Triangle, PointStyle.Square };
            XYMultipleSeriesRenderer renderer = BuildRenderer(colors, styles);
            int length = renderer.SeriesRendererCount;

            for (int i = 0; i < length; i++)
            {
                ((XYSeriesRenderer)renderer.GetSeriesRendererAt(i)).FillPoints = true;
            }
            SetChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 12.5, -10, 40, Color.LightGray, Color.LightGray);
            renderer.XLabels = 12;
            renderer.YLabels = 10;
            renderer.SetShowGrid(true);
            renderer.XLabelsAlign = Android.Graphics.Paint.Align.Right;
            renderer.SetYLabelsAlign(Android.Graphics.Paint.Align.Right);
            renderer.ZoomButtonsVisible = true;
            renderer.SetPanLimits(new double[] { -10, 20, -10, 40 });
            renderer.SetZoomLimits(new double[] { -10, 20, -10, 40 });

            XYMultipleSeriesDataset dataset = BuildDataset(titles, x, values);
            XYSeries series = dataset.GetSeriesAt(0);

            series.AddAnnotation("Vacation", 6, 30);
            Intent intent = ChartFactory.GetLineChartIntent(context, dataset, renderer, "Average temperature");

            return(intent);
        }
示例#15
0
        /// <summary>
        /// Executes the chart demo.
        /// </summary>
        /// <param name="context"> the context </param>
        /// <returns> the built intent </returns>
        public override Intent execute(Context context)
        {
            string[]         titles = new string[] { "Crete", "Corfu", "Thassos", "Skiathos" };
            IList <double[]> x      = new List <double[]>();

            for (int i = 0; i < titles.Length; i++)
            {
                x.Add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            }
            IList <double[]> values = new List <double[]>();

            values.Add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2, 13.9 });
            values.Add(new double[] { 10, 10, 12, 15, 20, 24, 26, 26, 23, 18, 14, 11 });
            values.Add(new double[] { 5, 5.3, 8, 12, 17, 22, 24.2, 24, 19, 15, 9, 6 });
            values.Add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 10 });
            int[]                    colors   = new int[] { Color.BLUE, Color.GREEN, Color.CYAN, Color.YELLOW };
            PointStyle[]             styles   = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND, PointStyle.TRIANGLE, PointStyle.SQUARE };
            XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
            int length = renderer.SeriesRendererCount;

            for (int i = 0; i < length; i++)
            {
                ((XYSeriesRenderer)renderer.getSeriesRendererAt(i)).FillPoints = true;
            }
            setChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 12.5, -10, 40, Color.LTGRAY, Color.LTGRAY);
            renderer.XLabels            = 12;
            renderer.YLabels            = 10;
            renderer.ShowGrid           = true;
            renderer.XLabelsAlign       = Align.RIGHT;
            renderer.YLabelsAlign       = Align.RIGHT;
            renderer.ZoomButtonsVisible = true;
            renderer.PanLimits          = new double[] { -10, 20, -10, 40 };
            renderer.ZoomLimits         = new double[] { -10, 20, -10, 40 };

            XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);
            XYSeries series = dataset.getSeriesAt(0);

            series.addAnnotation("Vacation", 6, 30);
            Intent intent = ChartFactory.getLineChartIntent(context, dataset, renderer, "Average temperature");

            return(intent);
        }
示例#16
0
            public virtual void OnClick(View v)
            {
                string seriesTitle = "Series " + (outerInstance.mDataset.SeriesCount + 1);
                // create a new series of data
                XYSeries series = new XYSeries(seriesTitle);

                outerInstance.mDataset.AddSeries(series);
                outerInstance.mCurrentSeries = series;
                // create a new renderer for the new series
                XYSeriesRenderer renderer = new XYSeriesRenderer();

                outerInstance.mRenderer.AddSeriesRenderer(renderer);
                // set some renderer properties
                renderer.PointStyle                 = global::AChartEngine.Charts.PointStyle.Circle;
                renderer.FillPoints                 = true;
                renderer.DisplayChartValues         = true;
                renderer.DisplayChartValuesDistance = 10;
                outerInstance.mCurrentRenderer      = renderer;
                outerInstance.SeriesWidgetsEnabled  = true;
                outerInstance.mChartView.Repaint();
            }
示例#17
0
        private void openChart()
        {
            int[] x       = { 0, 1, 2, 3, 4, 5, 6, 7 };
            int[] income  = { 2000, 2500, 2700, 3000, 2800, 3500, 3700, 3800 };
            int[] expense = { 2200, 2700, 2900, 2800, 2600, 3000, 3300, 3400 };

            // Creating an  XYSeries for Income
            XYSeries incomeSeries = new XYSeries("Income");
            // Creating an  XYSeries for Expense
            XYSeries expenseSeries = new XYSeries("Expense");

            // Adding data to Income and Expense Series
            for (int i = 0; i < x.Length; i++)
            {
                incomeSeries.Add(i, income[i]);
                expenseSeries.Add(i, expense[i]);
            }

            // Creating a dataset to hold each series
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

            // Adding Income Series to the dataset
            dataset.AddSeries(incomeSeries);
            // Adding Expense Series to dataset
            dataset.AddSeries(expenseSeries);

            // Creating XYSeriesRenderer to customize incomeSeries
            XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();

            incomeRenderer.Color              = Color.Rgb(130, 130, 230);
            incomeRenderer.FillPoints         = true;
            incomeRenderer.LineWidth          = 2;
            incomeRenderer.DisplayChartValues = true;

            // Creating XYSeriesRenderer to customize expenseSeries
            XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();

            expenseRenderer.Color              = Color.Rgb(220, 80, 80);
            expenseRenderer.FillPoints         = true;
            expenseRenderer.LineWidth          = 2;
            expenseRenderer.DisplayChartValues = true;

            // Creating a XYMultipleSeriesRenderer to customize the whole chart
            XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();

            multiRenderer.XLabels            = 0;
            multiRenderer.ChartTitle         = "Income vs Expense Chart";
            multiRenderer.XTitle             = "Year 2012";
            multiRenderer.YTitle             = "Amount in Dollars";
            multiRenderer.ZoomButtonsVisible = true;
            multiRenderer.BackgroundColor    = Color.Transparent;
            for (int i = 0; i < x.Length; i++)
            {
                multiRenderer.AddXTextLabel(i, mMonth[i]);
            }

            // Adding incomeRenderer and expenseRenderer to multipleRenderer
            // Note: The order of adding dataseries to dataset and renderers to multipleRenderer
            // should be same
            multiRenderer.AddSeriesRenderer(incomeRenderer);
            multiRenderer.AddSeriesRenderer(expenseRenderer);

            // Creating an intent to plot bar chart using dataset and multipleRenderer
            Intent intent = ChartFactory.GetBarChartIntent(this, dataset, multiRenderer, BarChart.Type.Default);

            // Start Activity
            StartActivity(intent);
        }
	  /// <summary>
	  /// Executes the chart demo.
	  /// </summary>
	  /// <param name="context"> the context </param>
	  /// <returns> the built intent </returns>
	  public override Intent execute(Context context)
	  {
		string[] titles = new string[] {"Crete Air Temperature", "Skiathos Air Temperature"};
		IList<double[]> x = new List<double[]>();
		for (int i = 0; i < titles.Length; i++)
		{
		  x.Add(new double[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
		}
		IList<double[]> values = new List<double[]>();
		values.Add(new double[] {12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2, 13.9});
		values.Add(new double[] {9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 10});
		int[] colors = new int[] {Color.GREEN, Color.rgb(200, 150, 0)};
		PointStyle[] styles = new PointStyle[] {PointStyle.CIRCLE, PointStyle.DIAMOND};
		XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
		renderer.PointSize = 5.5f;
		int length = renderer.SeriesRendererCount;
		for (int i = 0; i < length; i++)
		{
		  XYSeriesRenderer r = (XYSeriesRenderer) renderer.getSeriesRendererAt(i);
		  r.LineWidth = 5;
		  r.FillPoints = true;
		}
		setChartSettings(renderer, "Weather data", "Month", "Temperature", 0.5, 12.5, 0, 40, Color.LTGRAY, Color.LTGRAY);

		renderer.XLabels = 12;
		renderer.YLabels = 10;
		renderer.ShowGrid = true;
		renderer.XLabelsAlign = Align.RIGHT;
		renderer.YLabelsAlign = Align.RIGHT;
		renderer.ZoomButtonsVisible = true;
		renderer.PanLimits = new double[] {-10, 20, -10, 40};
		renderer.ZoomLimits = new double[] {-10, 20, -10, 40};

		XYValueSeries sunSeries = new XYValueSeries("Sunshine hours");
		sunSeries.add(1f, 35, 4.3);
		sunSeries.add(2f, 35, 4.9);
		sunSeries.add(3f, 35, 5.9);
		sunSeries.add(4f, 35, 8.8);
		sunSeries.add(5f, 35, 10.8);
		sunSeries.add(6f, 35, 11.9);
		sunSeries.add(7f, 35, 13.6);
		sunSeries.add(8f, 35, 12.8);
		sunSeries.add(9f, 35, 11.4);
		sunSeries.add(10f, 35, 9.5);
		sunSeries.add(11f, 35, 7.5);
		sunSeries.add(12f, 35, 5.5);
		XYSeriesRenderer lightRenderer = new XYSeriesRenderer();
		lightRenderer.Color = Color.YELLOW;

		XYSeries waterSeries = new XYSeries("Water Temperature");
		waterSeries.add(1, 16);
		waterSeries.add(2, 15);
		waterSeries.add(3, 16);
		waterSeries.add(4, 17);
		waterSeries.add(5, 20);
		waterSeries.add(6, 23);
		waterSeries.add(7, 25);
		waterSeries.add(8, 25.5);
		waterSeries.add(9, 26.5);
		waterSeries.add(10, 24);
		waterSeries.add(11, 22);
		waterSeries.add(12, 18);
		renderer.BarSpacing = 0.5;
		XYSeriesRenderer waterRenderer = new XYSeriesRenderer();
		waterRenderer.Color = Color.argb(250, 0, 210, 250);

		XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);
		dataset.addSeries(0, sunSeries);
		dataset.addSeries(0, waterSeries);
		renderer.addSeriesRenderer(0, lightRenderer);
		renderer.addSeriesRenderer(0, waterRenderer);
		waterRenderer.DisplayChartValues = true;
		waterRenderer.ChartValuesTextSize = 10;

		string[] types = new string[] {BarChart.TYPE, BubbleChart.TYPE, LineChart.TYPE, CubicLineChart.TYPE};
		Intent intent = ChartFactory.getCombinedXYChartIntent(context, dataset, renderer, types, "Weather parameters");
		return intent;
	  }
    public ChartLayerAppearance AddScatterSeries(string areaKey_, double[] xValues_, double[] yValues_, string[] pointNames_, string desc_, Color[] colors_, string yLabelFormat_)
    {
      if (xValues_ == null || xValues_.Length == 0) return null;
      //DataTable d = new DataTable();
      //d.Columns.Add("Label", typeof (string));
      //d.Columns.Add("XValue", typeof (double));
      //d.Columns.Add("YValue", typeof (double));

      //for (int i = 0; i < xValues_.Length; ++i)
      //{
      //  d.LoadDataRow(new object[]
      //  {
      //    pointNames_[i],
      //    xValues_[i],
      //    yValues_[i]
      //  }, true);
      //}

      var chart = new ChartLayerAppearance
      {
        ChartComponent = ultraChart1,
        ChartArea = ultraChart1.CompositeChart.ChartAreas.FromKey(areaKey_),
        ChartType = ChartType.ScatterChart,
      };

      chart.AxisX = chart.ChartArea.Axes[0];
      chart.AxisY = chart.ChartArea.Axes[1];

      for (int i = 0; i < pointNames_.Length; ++i)
      {
        var series = new XYSeries
        {
          Key = string.Format("{0}_{1}", areaKey_, pointNames_[i]),
          Label = string.Format("{0}_{1}", areaKey_, pointNames_[i])
        };
        series.Points.Add(new XYDataPoint(xValues_[i], yValues_[i], pointNames_[i], false));
        series.PEs.Add(new PaintElement(colors_[i]));

        ultraChart1.CompositeChart.Series.Add(series);
        chart.Series.Add(series);
      }

      var lcApp = (ScatterChartAppearance)chart.ChartTypeAppearance;
      lcApp.ConnectWithLines = false;
      lcApp.Icon = SymbolIcon.Diamond;
      lcApp.IconSize = SymbolIconSize.Medium;
      //lcApp.ChartText.Add(new ChartTextAppearance()
      //{
      //  Row = -2,
      //  Column = -2,
      //  ItemFormatString = "<ITEM_LABEL>",
      //  Visible = true,
      //  FontColor=Color.White
      //});
      //lcApp.NullHandling = nullHandling_;

      chart.Key = string.Format("{0}_chart", desc_);
      ultraChart1.CompositeChart.ChartLayers.Add(chart);

      return chart;
    }
示例#20
0
 public override void init()
 {
   ((Container) this).setLayout((LayoutManager) new BorderLayout());
   this.m_data = new XYSeries((IComparable) this.getFieldName());
   this.m_dataset = (XYDataset) new XYSeriesCollection(this.m_data);
   this.m_chartPanel = (JPanel) new ChartPanel(ChartFactory.createXYLineChart(this.getFieldName(), "Time (units)", "Data", this.m_dataset, PlotOrientation.__\u003C\u003EVERTICAL, false, true, false));
   ((JComponent) this.m_chartPanel).setPreferredSize(new Dimension(400, 300));
   ((JComponent) this.m_chartPanel).setBackground(((Component) this).getBackground());
   ((Container) this).add((Component) this.m_chartPanel, (object) "Center");
   ((JComponent) this).revalidate();
   ((Component) this).repaint();
 }
示例#21
0
        /// <summary>
        /// Executes the chart demo.
        /// </summary>
        /// <param name="context"> the context </param>
        /// <returns> the built intent </returns>
        public override Intent execute(Context context)
        {
            string[]         titles = new string[] { "Crete Air Temperature", "Skiathos Air Temperature" };
            IList <double[]> x      = new List <double[]>();

            for (int i = 0; i < titles.Length; i++)
            {
                x.Add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            }
            IList <double[]> values = new List <double[]>();

            values.Add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2, 13.9 });
            values.Add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 10 });
            int[]                    colors   = new int[] { Color.GREEN, Color.rgb(200, 150, 0) };
            PointStyle[]             styles   = new PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND };
            XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);

            renderer.PointSize = 5.5f;
            int length = renderer.SeriesRendererCount;

            for (int i = 0; i < length; i++)
            {
                XYSeriesRenderer r = (XYSeriesRenderer)renderer.getSeriesRendererAt(i);
                r.LineWidth  = 5;
                r.FillPoints = true;
            }
            setChartSettings(renderer, "Weather data", "Month", "Temperature", 0.5, 12.5, 0, 40, Color.LTGRAY, Color.LTGRAY);

            renderer.XLabels            = 12;
            renderer.YLabels            = 10;
            renderer.ShowGrid           = true;
            renderer.XLabelsAlign       = Align.RIGHT;
            renderer.YLabelsAlign       = Align.RIGHT;
            renderer.ZoomButtonsVisible = true;
            renderer.PanLimits          = new double[] { -10, 20, -10, 40 };
            renderer.ZoomLimits         = new double[] { -10, 20, -10, 40 };

            XYValueSeries sunSeries = new XYValueSeries("Sunshine hours");

            sunSeries.add(1f, 35, 4.3);
            sunSeries.add(2f, 35, 4.9);
            sunSeries.add(3f, 35, 5.9);
            sunSeries.add(4f, 35, 8.8);
            sunSeries.add(5f, 35, 10.8);
            sunSeries.add(6f, 35, 11.9);
            sunSeries.add(7f, 35, 13.6);
            sunSeries.add(8f, 35, 12.8);
            sunSeries.add(9f, 35, 11.4);
            sunSeries.add(10f, 35, 9.5);
            sunSeries.add(11f, 35, 7.5);
            sunSeries.add(12f, 35, 5.5);
            XYSeriesRenderer lightRenderer = new XYSeriesRenderer();

            lightRenderer.Color = Color.YELLOW;

            XYSeries waterSeries = new XYSeries("Water Temperature");

            waterSeries.add(1, 16);
            waterSeries.add(2, 15);
            waterSeries.add(3, 16);
            waterSeries.add(4, 17);
            waterSeries.add(5, 20);
            waterSeries.add(6, 23);
            waterSeries.add(7, 25);
            waterSeries.add(8, 25.5);
            waterSeries.add(9, 26.5);
            waterSeries.add(10, 24);
            waterSeries.add(11, 22);
            waterSeries.add(12, 18);
            renderer.BarSpacing = 0.5;
            XYSeriesRenderer waterRenderer = new XYSeriesRenderer();

            waterRenderer.Color = Color.argb(250, 0, 210, 250);

            XYMultipleSeriesDataset dataset = buildDataset(titles, x, values);

            dataset.addSeries(0, sunSeries);
            dataset.addSeries(0, waterSeries);
            renderer.addSeriesRenderer(0, lightRenderer);
            renderer.addSeriesRenderer(0, waterRenderer);
            waterRenderer.DisplayChartValues  = true;
            waterRenderer.ChartValuesTextSize = 10;

            string[] types  = new string[] { BarChart.TYPE, BubbleChart.TYPE, LineChart.TYPE, CubicLineChart.TYPE };
            Intent   intent = ChartFactory.getCombinedXYChartIntent(context, dataset, renderer, types, "Weather parameters");

            return(intent);
        }
示例#22
0
        protected override void OnCreate(Android.OS.Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.xy_chart);

            mX   = FindViewById <EditText>(Resource.Id.xValue);
            mY   = FindViewById <EditText>(Resource.Id.yValue);
            mAdd = FindViewById <Button>(Resource.Id.add);

            mRenderer.ApplyBackgroundColor = true;
            mRenderer.BackgroundColor      = Color.Argb(100, 50, 50, 50);
            mRenderer.AxisTitleTextSize    = 16;
            mRenderer.ChartTitleTextSize   = 20;
            mRenderer.LabelsTextSize       = 15;
            mRenderer.LegendTextSize       = 15;
            mRenderer.SetMargins(new int[] { 20, 30, 15, 0 });
            mRenderer.ZoomButtonsVisible = true;
            mRenderer.PointSize          = 5;

            mNewSeries        = FindViewById <Button>(Resource.Id.new_series);
            mNewSeries.Click += (e, s) =>
            {
                String   seriesTitle = "Series " + mDataset.SeriesCount + 1;
                XYSeries series      = new XYSeries(seriesTitle);
                mDataset.AddSeries(series);
                mCurrentSeries = series;
                XYSeriesRenderer renderer = new XYSeriesRenderer();
                mRenderer.AddSeriesRenderer(renderer);
                renderer.PointStyle                 = PointStyle.Circle;
                renderer.FillPoints                 = true;
                renderer.DisplayChartValues         = true;
                renderer.DisplayChartValuesDistance = 10;
                mCurrentRenderer = renderer;
                SetSeriesWidgetsEnabled(true);
                mChartView.Repaint();
            };

            mAdd.Click += (e, s) =>
            {
                double x = 0;
                double y = 0;
                try
                {
                    x = Double.Parse(mX.Text);
                }
                catch (Exception)
                {
                    mX.RequestFocus();
                    return;
                }
                try
                {
                    y = double.Parse(mY.Text);
                }
                catch (Exception)
                {
                    mY.RequestFocus();
                    return;
                }
                mCurrentSeries.Add(x, y);
                mX.Text = "";
                mY.Text = "";
                mX.RequestFocus();
                mChartView.Repaint();
            };
        }
示例#23
0
 public static XYSeries createMovingAverage(XYDataset source, int series, string name, double period, double skip)
 {
   if (source == null)
   {
     string str = "Null source (XYDataset).";
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new IllegalArgumentException(str);
   }
   else if (period < 4.94065645841247E-324)
   {
     string str = "period must be positive.";
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new IllegalArgumentException(str);
   }
   else if (skip < 0.0)
   {
     string str = "skip must be >= 0.0.";
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new IllegalArgumentException(str);
   }
   else
   {
     XYSeries xySeries = new XYSeries((IComparable) name);
     if (source.getItemCount(series) > 0)
     {
       double num1 = source.getXValue(series, 0) + skip;
       int i2 = source.getItemCount(series) - 1;
       while (i2 >= 0)
       {
         double xvalue1 = source.getXValue(series, i2);
         if (xvalue1 >= num1)
         {
           int num2 = 0;
           double num3 = 0.0;
           double num4 = xvalue1 - period;
           int num5 = 0;
           int num6 = 0;
           while (num6 == 0)
           {
             if (i2 - num5 >= 0)
             {
               double xvalue2 = source.getXValue(series, i2 - num5);
               Number y = source.getY(series, i2 - num5);
               if (xvalue2 > num4)
               {
                 if (y != null)
                 {
                   num3 += y.doubleValue();
                   ++num2;
                 }
               }
               else
                 num6 = 1;
             }
             else
               num6 = 1;
             ++num5;
           }
           if (num2 > 0)
             xySeries.add(xvalue1, num3 / (double) num2);
           else
             xySeries.add(xvalue1, (Number) null);
         }
         i2 += -1;
       }
     }
     return xySeries;
   }
 }
示例#24
0
        /// <summary>
        /// Create a dataset to display in the chart.  Extract the values from the
        /// StateMod_Reservoir curve data.
        /// </summary>
        private DefaultTableXYDataset createDataset()
        {
            string routine = "StateMod_Reservoir_AreaCap_Graph_JFrame.createDataSet";
            DefaultTableXYDataset dataset = new DefaultTableXYDataset();

            IList <StateMod_ReservoirAreaCap> v = __res.getAreaCaps();
            int size = 0;

            if (v != null)
            {
                size = v.Count;
            }
            XYSeries series = new XYSeries("Reservoir " + __res.getID() + " (" + __res.getName() + ") Content/" + __type + " Curve", false, false);
            StateMod_ReservoirAreaCap ac = null;
            // Speed up checks in loop...
            bool do_area = true;

            if (__type.Equals("Seepage", StringComparison.OrdinalIgnoreCase))
            {
                do_area = false;
            }
            double value_prev = -10000000.0, value = 0.0, value2 = 0.0;
            double content     = 0.0;
            int    match_count = 0;

            for (int i = 0; i < size; i++)
            {
                ac = (StateMod_ReservoirAreaCap)v[i];
                // Curves will often have a very large content to protect
                // against out of bounds for interpolation.  However, if this
                // point is graphed, it causes the other values to appear
                // miniscule.  Therefore, omit the last point if it is much
                // larger than the previous value.
                if ((size > 4) && (i == (size - 1)) && ac.getConten() > 9000000.0)
                {
                    Message.printStatus(2, routine, "Skipping last point.  Seems to be very large bounding" + " value and might skew the graph.");
                    continue;
                }
                // Add X first, then Y...
                if (do_area)
                {
                    value = ac.getSurarea();
                }
                else
                {
                    value = ac.getSeepage();
                }
                if (value == value_prev)
                {
                    // This is needed because JFreeChart will not allow
                    // adjacent X values to be the same.
                    ++match_count;
                    value2 = value + match_count * .00001;
                }
                else
                {
                    value2 = value;
                }
                content = ac.getConten();
                // REVISIT SAM 2006-08-20
                // Not sure if content needs to be checked the same way for
                // duplicates.
                Message.printStatus(2, routine, "X=" + value2 + " y=" + content);
                series.add(value2, content);
                value_prev = value;
            }
            dataset.addSeries(series);

            return(dataset);
        }
示例#25
0
        public override Android.Content.Intent Execute(Android.Content.Context context)
        {
            String[]         titles = new String[] { "Crete Air Temperature", "Skiathos Air Temperature" };
            IList <double[]> x      = new List <double[]>();

            for (int i = 0; i < titles.Length; i++)
            {
                x.Add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
            }
            IList <double[]> values = new List <double[]>();

            values.Add(new double[] { 12.3, 12.5, 13.8, 16.8, 20.4, 24.4, 26.4, 26.1, 23.6, 20.3, 17.2, 13.9 });
            values.Add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13, 10 });
            int[]                    colors   = new int[] { Color.Green, Color.Rgb(200, 150, 0) };
            PointStyle[]             styles   = new PointStyle[] { PointStyle.Circle, PointStyle.Diamond };
            XYMultipleSeriesRenderer renderer = BuildRenderer(colors, styles);

            renderer.PointSize = 5.5f;
            int length = renderer.SeriesRendererCount;

            for (int i = 0; i < length; i++)
            {
                XYSeriesRenderer r = (XYSeriesRenderer)renderer.GetSeriesRendererAt(i);
                r.LineWidth  = 5;
                r.FillPoints = true;
            }
            SetChartSettings(renderer, "Weather data", "Month", "Temperature", 0.5, 12.5, 0, 40, Color.LightGray, Color.LightGray);
            renderer.XLabels = 12;
            renderer.YLabels = 10;
            renderer.SetShowGrid(true);
            renderer.XLabelsAlign = Android.Graphics.Paint.Align.Right;
            renderer.SetYLabelsAlign(Android.Graphics.Paint.Align.Right);
            renderer.ZoomButtonsVisible = true;
            renderer.SetPanLimits(new double[] { -10, 20, -10, 40 });
            renderer.SetZoomLimits(new double[] { -10, 20, -10, 40 });

            XYValueSeries sunSeries = new XYValueSeries("Sunshine hours");

            sunSeries.Add(1f, 35, 4.3);
            sunSeries.Add(2f, 35, 4.9);
            sunSeries.Add(3f, 35, 5.9);
            sunSeries.Add(4f, 35, 8.8);
            sunSeries.Add(5f, 35, 10.8);
            sunSeries.Add(6f, 35, 11.9);
            sunSeries.Add(7f, 35, 13.6);
            sunSeries.Add(8f, 35, 12.8);
            sunSeries.Add(9f, 35, 11.4);
            sunSeries.Add(10f, 35, 9.5);
            sunSeries.Add(11f, 35, 7.5);
            sunSeries.Add(12f, 35, 5.5);
            XYSeriesRenderer lightRenderer = new XYSeriesRenderer();

            lightRenderer.Color = Color.Yellow;

            XYSeries waterSeries = new XYSeries("Water Temperature");

            waterSeries.Add(1, 16);
            waterSeries.Add(2, 15);
            waterSeries.Add(3, 16);
            waterSeries.Add(4, 17);
            waterSeries.Add(5, 20);
            waterSeries.Add(6, 23);
            waterSeries.Add(7, 25);
            waterSeries.Add(8, 25.5);
            waterSeries.Add(9, 26.5);
            waterSeries.Add(10, 24);
            waterSeries.Add(11, 22);
            waterSeries.Add(12, 18);
            renderer.BarSpacing = 0.5;
            XYSeriesRenderer waterRenderer = new XYSeriesRenderer();

            waterRenderer.Color = Color.Argb(250, 0, 210, 250);

            XYMultipleSeriesDataset dataset = BuildDataset(titles, x, values);

            dataset.AddSeries(0, sunSeries);
            dataset.AddSeries(0, waterSeries);
            renderer.AddSeriesRenderer(0, lightRenderer);
            renderer.AddSeriesRenderer(0, waterRenderer);
            waterRenderer.DisplayChartValues  = true;
            waterRenderer.ChartValuesTextSize = 10;

            String[] types  = new String[] { "Bar", BubbleChart.Type, LineChart.Type, CubicLineChart.Type };
            Intent   intent = ChartFactory.GetCombinedXYChartIntent(context, dataset, renderer, types, "Weather parameters");

            return(intent);
        }