MPAndroidChart: по оси x отображаются только альтернативные метки, когда появляется больше записей
В моем приложении для android у меня есть горизонтальная гистограмма с использованием MPAndroidChart.My проблема в том,что в моей гистограмме есть 12 баров, каждый из которых представляет месяц с апреля по март, но я могу видеть только метку альтернативных месяцев по оси X.Если есть небольшое количество баров, то я могу видеть все метки в оси X.Я не устанавливал количество меток для оси x, используя
XAxix.setLabelCount ()
Метод.Тогда почему я не могу видеть все этикетки? Если я увеличил масштаб, то я могу видеть этикетки для каждого бара.Я используя MPAndroidChart В3.0.1.Прилагается скриншот вышеизложенного.Смотрите, здесь я вижу только "апрель, июнь, август, октябрь, декабрь, февраль", а все остальные месяцы не отображаются.Как я могу видеть и все остальные месяцы?
Ниже приведен мой код.
yVals1 = new ArrayList<BarEntry>();
xVals = new ArrayList<String>();
for (int i = 0; i < listChart.size(); i++){
BarEntry newBEntry = new BarEntry(i,listChart.get(i).getAmount());
xVals.add(listChart.get(i).getAltName());
yVals1.add(newBEntry);
}
BarDataSet set1;
set1 = new BarDataSet(yVals1, "");
set1.setColors(new int[] {Color.BLUE,Color.GREEN});
ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
dataSets.add(set1);
BarData data = new BarData(dataSets);
data.setValueTextSize(10f);
barChartIncExp.setData(data);
barChartIncExp.setDrawBarShadow(false);
barChartIncExp.setDrawValueAboveBar(true);
barChartIncExp.getDescription().setEnabled(false);
barChartIncExp.setMaxVisibleValueCount(60);
// scaling can now only be done on x- and y-axis separately
barChartIncExp.setPinchZoom(true);
barChartIncExp.setDrawGridBackground(false);
barChartIncExp.setHighlightFullBarEnabled(false);
barChartIncExp.setHighlightPerDragEnabled(false);
XAxis xAxis = barChartIncExp.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
if(Math.round(value) >= xVals.size()) {
return null;
} else {
return xVals.get(Math.round(value));
}
}
});
YAxis leftAxis = barChartIncExp.getAxisLeft();
leftAxis.setDrawGridLines(false);
leftAxis.setLabelCount(8, false);
leftAxis.setSpaceTop(15f);
leftAxis.setDrawLabels(false);
YAxis rightAxis = barChartIncExp.getAxisRight();
rightAxis.setLabelCount(8, false);
rightAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
Legend l = barChartIncExp.getLegend();
l.setEnabled(false);
barChartIncExp.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry entry, Highlight highlight) {
}
@Override
public void onNothingSelected() {
}
});
4 ответа:
Вы можете изменить количество меток, которые вы хотите показать на оси Y.
XAxis xAxis=линейная диаграмма.getXAxis ();
XAxis.setLabelCount(4, true); //4-нет отображаемых значений.