android - 当出现在 mpandroidchart 上时,图表值会四舍五入

标签 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();

最佳答案

已实现您的代码,这里是解决方案。 但首先解释: 发生这种情况是因为值的范围很大,您在同一个图表上有 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

关于android - 当出现在 mpandroidchart 上时,图表值会四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267312/

相关文章:

java - 如何在android中导入特定版本的 Fabric

android - 文本和值的多选

android - 如何在 Android 中使用 MPAndroidchart 库将 x 轴和 y 轴叠加在折线图之上?

android - MPAndroidChart setGranularity(1.0f) 不起作用

java - 如何将 MPAndroidChart RadarChart 制作成圆形

android - 数据库连接出现 asynctask 错误

java - 你能推荐任何解决方案来节省内存并在android中快速加载吗?

android - MpAndroidChart 在限制线之间设置背景

android - MPAndroidChart 中折线图上的数据点被裁剪

android - 即使观察者 Activity 被破坏,MutableLiveData 也会保留旧值