mpandroidchart上的图表值四舍五入

时间:2018-07-10 14:03:46

标签: android mpandroidchart

这是我在MPAndroidChart:v3.0.3上的BarEntry的列表 enter image description here

您可以在数组的3个索引上看到其值。我的问题是,为什么这些值在图表上显示时会四舍五入? enter image description here

这是我的代码:

 barEntriesCur.add(new BarEntry(1, (float) Double.parseDouble(incomeModel.getIncome_Payable_Cur()) / 1000000));
 barEntriesCur.add(new BarEntry(2, (float) Double.parseDouble(incomeModel.getNosazi_Payable_Cur()) / 1000000));
 barEntriesCur.add(new BarEntry(3, (float) Double.parseDouble(incomeModel.getSenfi_Payable_Cur()) / 1000000));

 barEntriesPre.add(new BarEntry(1, (float) Double.parseDouble(incomeModel.getIncome_Payable_Pre()) / 1000000));
 barEntriesPre.add(new BarEntry(2, (float) Double.parseDouble(incomeModel.getNosazi_Payable_Pre()) / 1000000));
 barEntriesPre.add(new BarEntry(3, (float) Double.parseDouble(incomeModel.getSenfi_Payable_Pre()) / 1000000));


BarDataSet barDataSet = new BarDataSet(barEntriesCur, "cur");
barDataSet.setColors(AXisValueFormatter.SAFACUSTOM_COLORS2);
BarDataSet barDataSet1 = new BarDataSet(barEntriesPre, "pre");
barDataSet1.setColors(AXisValueFormatter.SAFACUSTOM_COLORS3);
BarData data = new BarData(barDataSet, barDataSet1);
mBinding.barChartReport.setData(data);
float groupSpace = 0.20f;
float barSpace = 0.02f;
float barWidth = 0.35f;
data.setBarWidth(barWidth);
data.setValueTextSize(10f);
mBinding.barChartReport.groupBars(1, groupSpace, barSpace);

mBinding.barChartReport.getAxisLeft().setStartAtZero(true);
mBinding.barChartReport.setPinchZoom(false);
mBinding.barChartReport.setBackgroundColor(Color.TRANSPARENT); 
mBinding.barChartReport.setDrawGridBackground(false);
mBinding.barChartReport.getDescription().setEnabled(false);
mBinding.barChartReport.setFitBars(true);
mBinding.barChartReport.invalidate();

1 个答案:

答案 0 :(得分:0)

实现了您的代码,这是解决方案。 但首先说明: 发生这种情况是因为值在较大范围内,同一张图上有5595和590,所以默认值格式化程序会删除小数,因为它认为这并不重要。

解决方案是实施您的自定义格式化程序:

public class MyDecimalValueFormatter implements IValueFormatter {
        @Override
        public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
            return String.valueOf(value);
        }
    }

然后将其设置为数据集:

data.setValueFormatter(new MyDecimalValueFormatter());

经过您的代码测试,并且可以(与您的数据一起使用):

enter image description here