I'm using the MPAndroidChart to create a bar chart. My configurations:
<string-array name="months_initials"> <item>J</item> <item>F</item> <item>M</item> <item>A</item> <item>M</item> <item>J</item> <item>J</item> <item>A</item> <item>S</item> <item>O</item> <item>N</item> <item>D</item> </string-array>
...
String[] months = getResources().getStringArray(R.array.months_initials); chart.getXAxis().setCenterAxisLabels(true); chart.getXAxis().setLabelCount(months.length, true); chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(months) { @Override public String getFormattedValue(float value, AxisBase axis) { Timber.i("index = %s", value); return super.getFormattedValue(value, axis); } });
index = 0.5
index = 1.5909091
index = 2.6818182
index = 3.7727275
index = 4.8636365
index = 5.9545455
index = 7.0454545
index = 8.136364
index = 9.227273
index = 10.318182
index = 11.409091
Now, if I change it to: return super.getFormattedValue(value-0.5f, axis);
Again, if I add another change: chart.getXAxis().setLabelCount(Integer.MAX_VALUE, true);
index = 0.5
index = 1.0
index = 1.5
index = 2.0
index = 2.5
index = 3.0
index = 3.5
index = 4.0
index = 4.5
index = 5.0
index = 5.5
index = 6.0
index = 6.5
index = 7.0
index = 7.5
index = 8.0
index = 8.5
index = 9.0
index = 9.5
index = 10.0
index = 10.5
index = 11.0
index = 11.5
index = 12.0
index = 12.5
A bit "hammer time" but it would work for me, unfortunately the labels are not correctly centered. So, what's happening here, what am I missing? How can I achieve my final result?
Thanks for your time.
ps: opened an issue too.
EDIT full setup code:
String[] months = getResources().getStringArray(R.array.months_initials); BarChart chart = binding.barChart; chart.setTouchEnabled(false); chart.getDescription().setEnabled(false); chart.getLegend().setEnabled(false); chart.getAxisLeft().setEnabled(false); chart.getAxisRight().setEnabled(false); chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM); chart.getXAxis().setDrawAxisLine(false); chart.getXAxis().setDrawGridLines(false); chart.getXAxis().setCenterAxisLabels(true); chart.getXAxis().setLabelCount(Integer.MAX_VALUE, true); chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(months) { @Override public String getFormattedValue(float value, AxisBase axis) { Timber.i("index = %s", value); return super.getFormattedValue(value - 0.5f, axis); } }); chart.getXAxis().setTextColor(ContextCompat.getColor(this, R.color.grey)); chart.getXAxis().setTextSize(12); BarDataSet barData = new BarDataSet(data, "data"); barData.setColor(ContextCompat.getColor(this, R.color.chart_bar)); barData.setDrawValues(false); ArrayList<IBarDataSet> dataSets = new ArrayList<>(); dataSets.add(barData); binding.barChart.setData(new BarData(dataSets)); binding.barChart.animateY(1000, Easing.EasingOption.Linear);