MPAndroidChart Horizo​​ntalBarChart setVisibleXRangeMaxmum无法正常工作

时间:2016-06-04 08:47:26

标签: android mpandroidchart

Description

根据照片。我在HorizontalBarChart中使用MPAndroidChart。我只想让图表显示x HorizontalBarChart方向上的10个项目。我setVisibleXRangeMinimumsetVisibleXRangeMaxmum但它不起作用。我应该怎么做才能使它工作?

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);
        }
    }
    

1 个答案:

答案 0 :(得分:1)

问题是,您要将数据集设置为图表,然后在将数据集设置为图表之前设置其X范围而不是设置X范围。

您可以在最后的else部分中添加以下代码:

horizontalBarChart.invalidate();
horizontalBarChart.refreshDrawableState();

或者在initCombinedChart中使用以下代码:

horizontalBarChart.setVisibleXRangeMaximum(10);
horizontalBarChart.setVisibleXRangeMinimum(7);

编辑1: 尝试使用setVisibleYRangeMaximum代替setVisibleXRangeMaximum