我试图绘制条形图,并想在条形图上设置标签 . 但最后一个条目的标签没有显示 . 以下是我设置图表的方法 . 机器arraylist包含标签,我将其复制到我的字符串数组mac []中 .

String[] mac = new String[machines.size()];;
            for(int i=0;i<machines.size();++i)
            {
               mac[i] = machines.get(i);
            }


            BarChart chart1 = (BarChart) findViewById(R.id.chart1);
            BarDataSet bds2 = new BarDataSet(barEntries, "Target");
            BarDataSet bds1 = new BarDataSet(barEntries1,"Prepared");
            bds1.setColor(Color.parseColor("#F44336"));
            BarData ddata1 = new BarData(bds1,bds2);
            chart1.setScaleEnabled(true);
            chart1.setPinchZoom(true);
            chart1.setData(ddata1);
            XAxis xa1 = chart1.getXAxis();
            xa1.setValueFormatter(new MyAxisValueFormatter(mac));

            xa1.setCenterAxisLabels(true);
            chart1.setTouchEnabled(true);
            chart1.setDragEnabled(true);
            chart1.setScaleEnabled(true);
            float groupSpace = 0.0f;
            float barSpace = 0.0f; 
            chart1.fitScreen();
            ddata1.setBarWidth(barWidth);
            xa1.setLabelCount(machines.size(),true);
            chart1.groupBars( 0.0f,groupSpace, barSpace);
            chart1.setFitBars(true); // make the x-axis fit exactly all bars
            chart1.setVisibility(View.VISIBLE);
            xa1.setGranularity(1f);
            xa1.setAxisMinimum(0);
            xa1.setGranularityEnabled(true);
            xa1.setCenterAxisLabels(true);
            chart1.invalidate();

这是我的MyAxisValueFormatter类

public class MyAxisValueFormatter implements IAxisValueFormatter
    {
        private String [] m;
        public MyAxisValueFormatter(String[] arr)
        {
            this.m = arr;
        }

        @Override
        public String getFormattedValue(float value, AxisBase axis) {
         return m[(int) value];
        }

        @Override
        public int getDecimalDigits() {
            return 0;
        }


    }

现在我很确定机器的arraylist大小是12,但我的图表上的标签数量只有11,即最后一个标签没有显示 . 我尝试在日志中的MyAxisValueFormatter类的getFormattedValue函数中显示 value 变量 . 得到了这个 . 根据文档"value"表示标签在轴上的位置(x或y) .

日志是:

07-24 21:21:28.299 26339-26339/com.example.quickstart I/flag: -0.5
07-24 21:21:28.300 26339-26339/com.example.quickstart I/flag: 0.5909091
    1.6818182
    2.7727275
    3.8636365
    4.9545455
    6.0454545
    7.1363635
    8.227273
    9.318182
    10.409091
    11.5
07-24 21:21:28.304 26339-26339/com.example.quickstart I/flag: 0.0
    1.0681819
    2.1363637
    3.2045455
    4.2727275
    5.3409095
07-24 21:21:28.305 26339-26339/com.example.quickstart I/flag: 6.4090915
    7.4772735
    8.545455
    9.613637
    10.681819
    11.750001
07-24 21:21:28.310 26339-26339/com.example.quickstart I/flag: 0.0
    1.0681819
    2.1363637
    3.2045455
    4.2727275
    5.3409095
    6.4090915
    7.4772735
    8.545455
    9.613637
07-24 21:21:28.311 26339-26339/com.example.quickstart I/flag: 10.681819
    11.750001
07-24 21:21:28.313 26339-26339/com.example.quickstart I/flag: 0.0
    1.0681819
07-24 21:21:28.314 26339-26339/com.example.quickstart I/flag: 2.1363637
07-24 21:21:28.315 26339-26339/com.example.quickstart I/flag: 3.2045455
    4.2727275
    5.3409095
07-24 21:21:28.316 26339-26339/com.example.quickstart I/flag: 6.4090915
    7.4772735
07-24 21:21:28.317 26339-26339/com.example.quickstart I/flag: 8.545455
    9.613637
07-24 21:21:28.318 26339-26339/com.example.quickstart I/flag: 10.681819
07-24 21:21:28.344 26339-26339/com.example.quickstart I/flag: 0.0
07-24 21:21:28.345 26339-26339/com.example.quickstart I/flag: 1.0681819
    2.1363637
    3.2045455
    4.2727275
    5.3409095
    6.4090915
    7.4772735
    8.545455
    9.613637
    10.681819
    11.750001
07-24 21:21:28.348 26339-26339/com.example.quickstart I/flag: 0.0
    1.0681819
07-24 21:21:28.349 26339-26339/com.example.quickstart I/flag: 2.1363637
    3.2045455
    4.2727275
07-24 21:21:28.350 26339-26339/com.example.quickstart I/flag: 5.3409095
    6.4090915
    7.4772735
07-24 21:21:28.351 26339-26339/com.example.quickstart I/flag: 8.545455
    9.613637
    10.681819

现在我不明白为什么不在最后一行打印 11.750001 . 而且为什么x的值大约增加0.6,如从0到1.0681819,而不是1.我可能犯了一个微不足道的错误,导致我的标签定位在轴上弄乱了 . 我想要的就是显示所有标签 . 请看看这个 . 任何协助赞赏 .

这是我目前运行的应用程序的一个scrot . 如你所见,只有11个标签,应该有12个 .

Screen Shot

编辑:

实况值是,FTP12之后的值:

07-24 21:56:50.612 1755-1982/com.example.quickstart I/FTP12: 0000002500 
07-24 21:56:50.615 1755-1982/com.example.quickstart I/FTP12: 0000007350 
07-24 21:56:50.619 1755-1982/com.example.quickstart I/FTP12: 0000004500 
07-24 21:56:50.622 1755-1982/com.example.quickstart I/FTP12: 0000007000 
07-24 21:56:50.624 1755-1982/com.example.quickstart I/FTP12: 0000007000 
07-24 21:56:50.626 1755-1982/com.example.quickstart I/FTP12: 0000003500 
07-24 21:56:50.628 1755-1982/com.example.quickstart I/FTP12: 0000009000 
07-24 21:56:50.631 1755-1982/com.example.quickstart I/FTP12: 0000007151 
07-24 21:56:50.633 1755-1982/com.example.quickstart I/FTP12: 0000004378 
07-24 21:56:50.635 1755-1982/com.example.quickstart I/FTP12: 0000006810 
07-24 21:56:50.637 1755-1982/com.example.quickstart I/FTP12: 0000003405 
07-24 21:56:50.639 1755-1982/com.example.quickstart I/FTP12: 0000008756

barentries1值是,barentries1之后的值:

07-24 21:59:20.008 3331-3435/com.example.quickstart I/barentries1: 000000000001504 
07-24 21:59:20.013 3331-3435/com.example.quickstart I/barentries1: 000000000002842 
07-24 21:59:20.017 3331-3435/com.example.quickstart I/barentries1: 000000000001796 
07-24 21:59:20.020 3331-3435/com.example.quickstart I/barentries1: 000000000003658 
07-24 21:59:20.023 3331-3435/com.example.quickstart I/barentries1: 000000000001965 
07-24 21:59:20.025 3331-3435/com.example.quickstart I/barentries1: 000000000000796 
07-24 21:59:20.027 3331-3435/com.example.quickstart I/barentries1: 000000000007631 
07-24 21:59:20.029 3331-3435/com.example.quickstart I/barentries1: 000000000006323 
07-24 21:59:20.032 3331-3435/com.example.quickstart I/barentries1: 000000000000496 
07-24 21:59:20.033 3331-3435/com.example.quickstart I/barentries1: 000000000003531 
07-24 21:59:20.035 3331-3435/com.example.quickstart I/barentries1: 000000000002313 
07-24 21:59:20.037 3331-3435/com.example.quickstart I/barentries1: 000000000000954 
07-24 21:59:20.040 3331-3435/com.example.quickstart I/barentries1: 000000000005071

机器值是,机器后面的值:

07-24 22:00:14.244 3639-3709/com.example.quickstart I/machines: TEMP-2 
07-24 22:00:14.249 3639-3709/com.example.quickstart I/machines: TEMP-3 
07-24 22:00:14.254 3639-3709/com.example.quickstart I/machines: TEMP-1 
07-24 22:00:14.257 3639-3709/com.example.quickstart I/machines: BENTLER-1 
07-24 22:00:14.263 3639-3709/com.example.quickstart I/machines: BENTLER-2 
07-24 22:00:14.265 3639-3709/com.example.quickstart I/machines: DEMAN 
07-24 22:00:14.267 3639-3709/com.example.quickstart I/machines: ANNE-LOSE 
07-24 22:00:14.269 3639-3709/com.example.quickstart I/machines: TEMP-3 
07-24 22:00:14.272 3639-3709/com.example.quickstart I/machines: ANNEALD-1 
07-24 22:00:14.274 3639-3709/com.example.quickstart I/machines: TEMP-1 
07-24 22:00:14.276 3639-3709/com.example.quickstart I/machines: BENTLER-1 
07-24 22:00:14.278 3639-3709/com.example.quickstart I/machines: DEMAN 
07-24 22:00:14.280 3639-3709/com.example.quickstart I/machines: ANNE-LOSE