2016-06-04 10 views
1

DescriptionMPAndroidChart HorizontalBarChart setVisibleXRangeMaxmum funktioniert nicht

Nach dem Foto. Ich benutze HorizontalBarChart in MPAndroidChart. Ich möchte nur das Diagramm zeigen etwa 10 Artikel in x Richtung HorizontalBarChart. I setVisibleXRangeMinimum und setVisibleXRangeMaxmum aber es funktioniert nicht. Was soll ich tun, damit es funktioniert?

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

Können Sie bitte einen Code hinzufügen? – Dhruv

+0

@Dhruv Sry für die Verzögerung! Ich habe meinen Code bereits oben gepostet. Vielen Dank für Ihre Hilfe :-) –

+0

Versuchen Sie 'horizontalBarChart.invalidate();' und 'horizontalBarChart.refreshDrawableState();' nach 'animateY' ​​in Ihrem anderen Teil hinzuzufügen. – Dhruv

Antwort

1

Das Problem ist, Sie setzen den Datensatz c hart und dann stellen Sie seinen X-Bereich ein, anstatt den X-Bereich zu setzen, bevor Sie die Datenmenge auf Diagramm setzen.

können Sie entweder hinzufügen, in anderen Teil am Ende folgenden Code:

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

oder in Ihrem initCombinedChart folgenden Code:

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

Edit 1: mit setVisibleYRangeMaximum Versuchen statt setVisibleXRangeMaximum.

+0

Ich habe beide Antworten versucht, funktioniert aber immer noch nicht. Y-Richtung im Bild wurde gestreckt. –

+0

Das bedeutet, dass etwas passiert. Bis jetzt war nichts gestreckt. – Dhruv

+0

Versuchen Sie mit 'setVisibleYRangeMaximum' anstelle von' setVisibleXRangeMaximum'. – Dhruv

Verwandte Themen