LineSeries and ColumnSeries do not work under Xamarin.Android but work fine under Xamarin UWP

Here's my code which works well in UWP but does not work in Android:


            LineSeries costLineSeries = new LineSeries();

            LineSeries totBenLineSeries = new LineSeries();

            LineSeries hardBenLineSeries = new LineSeries();


            ObservableCollection<ChartDataPoint> costData = new ObservableCollection<ChartDataPoint>();

            ObservableCollection<ChartDataPoint> totBenData = new ObservableCollection<ChartDataPoint>();

            ObservableCollection<ChartDataPoint> hardBenData = new ObservableCollection<ChartDataPoint>();


            for (int i = 0; i < App.currentProject.PaybackPeriod + 1; i++)

            {

                costData.Add(new ChartDataPoint("Year " + i.ToString(), App.finGraph[0, i]));

                totBenData.Add(new ChartDataPoint("Year " + i.ToString(), App.finGraph[1, i]));

                hardBenData.Add(new ChartDataPoint("Year " + i.ToString(), App.finGraph[2, i]));

            }


            costLineSeries.Label = "Cumulative Costs";

            totBenLineSeries.Label = "Cumulative Total Benefits";

            hardBenLineSeries.Label = "Cumulative Hard Benefits";

            costLineSeries.ItemsSource = costData;

            costLineSeries.XBindingPath = "XValue";

            costLineSeries.YBindingPath = "YValue";

            totBenLineSeries.ItemsSource = totBenData;

            totBenLineSeries.XBindingPath = "XValue";

            totBenLineSeries.YBindingPath = "YValue";

            hardBenLineSeries.ItemsSource = hardBenData;

            hardBenLineSeries.XBindingPath = "XValue";

            hardBenLineSeries.YBindingPath = "YValue";


            //chtBreakEven.Series.Add(benSeries);

            chtBreakEven.Series.Add(costLineSeries);

            chtBreakEven.Series.Add(totBenLineSeries);

            chtBreakEven.Series.Add(hardBenLineSeries);


            chtBreakEven.Title = new ChartTitle { Text = "Breakeven Analysis" };


            ColumnSeries colSeries = new ColumnSeries();

            ColumnSeries colSeriesHard = new ColumnSeries();

// ObservableCollection<ChartDataPoint> cashFlowdata = new ObservableCollection<ChartDataPoint>();

// ObservableCollection<ChartDataPoint> hardCashFlowdata = new ObservableCollection<ChartDataPoint>();

            ObservableCollection<graphData> cashFlowdata = new ObservableCollection<graphData>();

            ObservableCollection<graphData> hardCashFlowdata = new ObservableCollection<graphData>();


            if (App.finGraph == null)

                return;

            for (int i = 0; i < App.currentProject.PaybackPeriod + 1; i++)

            {

                graphData cashFlowDataPoint = new graphData();

                cashFlowDataPoint.label = "Year " + i.ToString();

                cashFlowDataPoint.datapoint = App.finGraph[3, i];

                cashFlowdata.Add(cashFlowDataPoint);


                graphData hardCashFlowDataPoint = new graphData();

                hardCashFlowDataPoint.label = "Year " + i.ToString();

                hardCashFlowDataPoint.datapoint = App.finGraph[4, i];

                hardCashFlowdata.Add(hardCashFlowDataPoint);


                //cashFlowdata.Add(new graphData() ChartDataPoint("Year " + i.ToString(), App.finGraph[3, i]));

                //hardCashFlowdata.Add(new ChartDataPoint("Year " + i.ToString(), App.finGraph[4, i]));

            }

            colSeries.ItemsSource = lstCostRows;

            colSeries.XBindingPath = "CostName";

            colSeries.YBindingPath = "TotalCost";

            colSeries.Label = "Hard and Soft Benefits";

            colSeriesHard.ItemsSource = hardCashFlowdata;

            colSeriesHard.XBindingPath = "label";

            colSeriesHard.YBindingPath = "datapoint";

            colSeriesHard.Label = "Hard Benefits Only";

            chtCashFlowColumn.Series.Add(colSeries);

            chtCashFlowColumn.Series.Add(colSeriesHard);

            chtCashFlowColumn.Title = new ChartTitle { Text = "Cash Flow" };






3 Replies

DD Devakumar Dhanapoosanam Syncfusion Team August 1, 2022 08:13 AM UTC

Hi Sree Sundaram,


We have analyzed the provided code snippet and we suspect that you were missed to add the chart Axis for the chart. We would like to let you know that for Cartesian series it is mandatory to set the PrimaryAxis and SecondaryAxis for the chart as per in the below code example.


SfChart chart = new SfChart();

 

//Initializing Primary Axis

CategoryAxis primaryAxis = new CategoryAxis();

chart.PrimaryAxis = primaryAxis;

 

//Initializing Secondary Axis

NumericalAxis secondaryAxis = new NumericalAxis();

chart.SecondaryAxis = secondaryAxis;


<chart:SfChart x:Name="chart">

    <chart:SfChart.PrimaryAxis>

        <chart:CategoryAxis/>

    </chart:SfChart.PrimaryAxis>

    <chart:SfChart.SecondaryAxis>

        <chart:NumericalAxis/>

    </chart:SfChart.SecondaryAxis>
   
</
chart:SfChart>


Please refer below link for more details

https://help.syncfusion.com/xamarin/charts/getting-started#initialize-chart


Note: Axis is not required for the accumulation series types like Pie and Doughnut series, but axis is required for all other cartesian series.


Please let us know if you need any further assistance.


Regards,

Devakumar D



SS Sree Sundaram August 1, 2022 06:33 PM UTC

Thank you Devakumar. That fixed the problem. You might need to update the documentation to include your guidance.


Sree



DD Devakumar Dhanapoosanam Syncfusion Team August 2, 2022 08:15 AM UTC

Hi Sree Sundaram,


We are glad to know that the provided solution works.


Thank you for providing feedback to help us improve our documentation.


Regards,

Devakumar D


Loader.
Up arrow icon