Xamarin.Android MPAndroidChart Barchart: столбцы не выровнены правильно на метках оси X - PullRequest
0 голосов
/ 24 октября 2018

Я использую диаграмму MPAndroidChart ... все в порядке, кроме оси X ... мои столбцы не выровнены должным образом на этикетках.когда я масштабирую график, столбцы появляются на его метках, но этот масштаб не тот, который я хотел, а также, когда я масштабирую метки, повторяюсь до следующего и так далее.мои данные, например, например:

age(x)  weight(y)
2      90
5      100
7      200
10     300

возраст - это мои метки, и это строковый тип ... мне нужно, чтобы это была строковая метка.

это то, что я получил enter image description here

enter image description here

это мой код в c #

//-----chart-------------
            barChart = FindViewById<BarChart>(Resource.Id.barChart);


            List<BarEntry> entries = new List<BarEntry>();
            List<string> labelz = new List<string>();


            int c = 0;
            foreach(var rec in weighting_lst)
            {

                entries.Add(new BarEntry(c, rec.Weight));
                labelz.Add(rec.Age.ToString());
                c++;


            }


            BarDataSet dataset = new BarDataSet(entries, "وزن به گرم");
            BarData data = new BarData(dataset);


            var xdata = barChart.XAxis;
            xdata.ValueFormatter = new MyLabelFormatter(labelz);
            xdata.SetCenterAxisLabels(false);

            barChart.Data = data;
            barChart.SetScaleEnabled(true);
            barChart.SetFitBars(true);

public class MyLabelFormatter : Java.Lang.Object, IAxisValueFormatter
        {
            //private string[] customLabels = new string[] { "A", "B", "C", "D", "E", "F" };

            public List<string> label_lst = new List<string>();

            public MyLabelFormatter(List<string> _label_lst)
            {
                label_lst = _label_lst;
            }

            public string GetFormattedValue(float value, AxisBase axis)
            {
                return label_lst[(int)value % label_lst.Count];
            }
        }

для хположение входа в бар, я просто использую целое число c, которое увеличивается на 1 в каждом цикле, так что это дает мне как 0f, 1f, 2f, ......

1 Ответ

0 голосов
/ 24 октября 2018

я добавил xdata.Granularity = 1f; и у меня это работает .... xdata - это мой Xaxis

...