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?
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-
The ValueFormatter interface let's you display whatever you want inside the chart. More decimals, less decimals, strings, ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With