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