我正在使用MPAndroid图表 https://github.com/PhilJay/MPAndroidChart创建条形图。我的配置:
<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);
}
});
指数 = 0.5
指数 = 1.5909091
指数 = 2.6818182
指数 = 3.7727275
指数 = 4.8636365
指数 = 5.9545455
指数 = 7.0454545
指数 = 8.136364
指数 = 9.227273
指数 = 10.318182
指数 = 11.409091
And this is the result:
现在,如果我将其更改为:return super.getFormattedValue(value-0.5f, axis);
The result is:
再说一遍,如果我添加另一个更改:chart.getXAxis().setLabelCount(Integer.MAX_VALUE, true);
指数 = 0.5
指数 = 1.0
指数=1.5
指数 = 2.0
指数=2.5
指数 = 3.0
指数=3.5
指数 = 4.0
指数=4.5
指数 = 5.0
指数=5.5
指数 = 6.0
指数=6.5
指数 = 7.0
指数 = 7.5
指数 = 8.0
指数=8.5
指数 = 9.0
指数=9.5
指数 = 10.0
指数=10.5
指数 = 11.0
指数=11.5
指数 = 12.0
指数=12.5
The result is:
有点“锤击时间”,但它对我有用,不幸的是标签没有正确居中。
那么,这里发生了什么,我错过了什么?我怎样才能达到我的最终结果?
谢谢你的时间。
ps:开了一个issue https://github.com/PhilJay/MPAndroidChart/issues/3810 too.
EDIT完整设置代码:
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);