根据照片。我在HorizontalBarChart
中使用MPAndroidChart
。我只想让图表显示x
HorizontalBarChart
方向上的10个项目。我setVisibleXRangeMinimum
和setVisibleXRangeMaxmum
但它不起作用。我应该怎么做才能使它工作?
Edit Jun 7 14:50
initialization
private void initCombinedChart() {
horizontalBarChart.setDescription("");
horizontalBarChart.setDrawGridBackground(false);
horizontalBarChart.setDrawBarShadow(false);
horizontalBarChart.getLegend().setTextColor(Color.rgb(255, 255, 255));
horizontalBarChart.setScaleEnabled(false);
horizontalBarChart.setOnChartValueSelectedListener(this);
horizontalBarChart.setDrawValueAboveBar(true);
Legend legend = horizontalBarChart.getLegend();
legend.setFormSize(8f);
YAxis rightAxis = horizontalBarChart.getAxisRight();
rightAxis.setEnabled(false);
YAxis leftAxis = horizontalBarChart.getAxisLeft();
leftAxis.setDrawGridLines(false);
leftAxis.setAxisMinValue(0f);
leftAxis.setTextColor(Color.rgb(255, 255, 255));
leftAxis.setEnabled(false);
XAxis xAxis = horizontalBarChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(false);
}
setData
private void setData() {
ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
ArrayList<String> xVals = new ArrayList<>();
DateHelper dateHelper = new DateHelper(DateHelper.FORMAT_ONLINE);
for (OnlineCountResult.OnlineCountModel model : mDatas) {
xVals.add(dateHelper.getDateSimpleDate(model.getBatchMinute()));
entries.add(new BarEntry((float) model.getCountNum(), mDatas.indexOf(model)));
}
BarDataSet set;
if (horizontalBarChart.getData() != null && horizontalBarChart.getData().getDataSetCount() > 0) {
set = (BarDataSet) horizontalBarChart.getData().getDataSetByIndex(0);
set.setYVals(entries);
horizontalBarChart.getData().setXVals(xVals);
horizontalBarChart.getData().notifyDataChanged();
horizontalBarChart.notifyDataSetChanged();
} else {
...
ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add(set);
BarData data = new BarData(xVals, dataSets);
data.setValueTextSize(20f);
horizontalBarChart.setData(data);
horizontalBarChart.setVisibleXRangeMaximum(10);
horizontalBarChart.setVisibleXRangeMinimum(7);
horizontalBarChart.animateY(1000);
}
}
答案 0 :(得分:1)
问题是,您要将数据集设置为图表,然后在将数据集设置为图表之前设置其X范围而不是设置X范围。
您可以在最后的else部分中添加以下代码:
horizontalBarChart.invalidate();
horizontalBarChart.refreshDrawableState();
或者在initCombinedChart中使用以下代码:
horizontalBarChart.setVisibleXRangeMaximum(10);
horizontalBarChart.setVisibleXRangeMinimum(7);
编辑1:
尝试使用setVisibleYRangeMaximum
代替setVisibleXRangeMaximum
。