MP android chart displaying float values at X-Axis of Horizontal bar Chart?

匿名 (未验证) 提交于 2019-12-03 08:52:47

问题:

I am using MP chart for displaying reviews, everything is working fine except that the the X-axis values are displaying as a floating value (for number of particular type of review).

This is the code I am using:

     BarData data = new BarData(getXAxisValues(), getDataSet(properties));             chart.setData(data);             chart.getXAxis().setEnabled(false); // hides horizontal grid lines inside chart             YAxis leftAxis = chart.getAxisLeft();             chart.getAxisRight().setEnabled(false); // hides horizontal grid lines with below line             leftAxis.setEnabled(false); // hides vertical grid lines  inside chart             /*chart.animateXY(2000, 2000);*/ // for animating reviews display             chart.invalidate();             chart.setClickable(false);             chart.setDescription("");    // Hide the description             chart.getLegend().setEnabled(false);             chart.setDoubleTapToZoomEnabled(false);             chart.setPinchZoom(false);              leftAxis.setDrawLabels(true); private ArrayList<BarDataSet> getDataSet(Properties properties) {         ArrayList<BarDataSet> dataSets = null;          ArrayList<BarEntry> valueSet1 = new ArrayList<>();          BarEntry v1e1 = new BarEntry(properties.getRating10().intValue(), 0);         valueSet1.add(v1e1);         BarEntry v1e2 = new BarEntry(properties.getRating20().intValue(), 1);         valueSet1.add(v1e2);         BarEntry v1e3 = new BarEntry(properties.getRating30().intValue(), 2);         valueSet1.add(v1e3);         BarEntry v1e4 = new BarEntry(properties.getRating40().intValue(), 3);         valueSet1.add(v1e4);         BarEntry v1e5 = new BarEntry(properties.getRating50().intValue(), 4);         valueSet1.add(v1e5);          BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Asset");         barDataSet1.setColors(ColorTemplate.COLORFUL_COLORS);          dataSets = new ArrayList<>();         dataSets.add(barDataSet1);         return dataSets;     }      private ArrayList<String> getXAxisValues() {         ArrayList<String> xAxis = new ArrayList<>();         xAxis.add("12.0");         xAxis.add("4.0");         xAxis.add("4");         xAxis.add("4");         xAxis.add("4");         return xAxis;     } 

Here I am setting data to horizontal bar chart.

I want the red circled values to be in integers instead of float. Can anyone help me?

回答1:

I have got it solved (thanks again Philipp), This is the solution

Create Your own value formatter class that implements the given ValueFormatter

this is my class:

public class MyValueFormatter implements ValueFormatter{     @Override     public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {         return Math.round(value)+"";      } } 

Then set the value Formatter to your BarData:

BarData data = new BarData(getXAxisValues(), getDataSet(properties)); data.setValueFormatter(new MyValueFormatter()); 

That's it this is the output-



回答2:

The ValueFormatter interface let's you display whatever you want inside the chart. More decimals, less decimals, strings, ...



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!