2017-05-10 2 views
1

Richtig Jetzt habe ich dieses Problem. Ich erhalte wiederholte Werte in xAchse ist die erste und die letzte. Und Grafikwerte entsprechen nicht den Werten der jeweiligen x-Achsenwerte. und das zweite Problem ist, wenn ich die Werte nicht in float aber int int Rounded anzeigen und ihre Farbe in weiß ändern möchte.Abrufen von doppelten Werten bei xAxis MPChart

ArrayList<String> xlabels = new ArrayList<String>(); 
     xlabels.add("Jan"); 
     xlabels.add("Feb"); 
     xlabels.add("Mar"); 
     xlabels.add("Apr"); 
     xlabels.add("May"); 
     xlabels.add("Jun"); 

     ArrayList<String> values = new ArrayList<String>(); 
     values.add("1"); 
     values.add("20"); 
     values.add("10"); 
     values.add("80"); 
     values.add("90"); 
     values.add("24"); 

     showLineChart(clickChart,xlabels,values,mColors[3]); 

showLineChart Methode:

private void showLineChart(LineChart chart,final List<String> xLabels, List<String> values,int color){ 
     List<Entry> entries = new ArrayList<Entry>(); 
     for(int i=0;i<values.size();i++){ 
      entries.add(new Entry(i, Integer.parseInt(values.get(i)))); 
     } 



     LineDataSet dataSet = new LineDataSet(entries, "Numbers"); 
     dataSet.setLineWidth(1.75f); 
     dataSet.setCircleRadius(5f); 
     dataSet.setCircleHoleRadius(2.5f); 
     dataSet.setColor(Color.WHITE); 
     dataSet.setCircleColor(Color.WHITE); 
     dataSet.setHighLightColor(Color.WHITE); 
     dataSet.setDrawValues(true); 


     LineData data = new LineData(dataSet); 
     ((LineDataSet) data.getDataSetByIndex(0)).setCircleColorHole(color); 

     chart.getDescription().setEnabled(false); 

     chart.setDrawGridBackground(false); 

     chart.setTouchEnabled(true); 

     chart.setBorderColor(Color.WHITE); 

     chart.setDragEnabled(true); 
     chart.setScaleEnabled(true); 


     chart.setPinchZoom(false); 

     chart.setBackgroundColor(color); 

     YAxis yAxisLeft = chart.getAxisLeft(); 
     yAxisLeft.setTextColor(Color.WHITE); 
     yAxisLeft.setAxisLineColor(Color.WHITE); 


     YAxis yAxisRight = chart.getAxisRight(); 
     yAxisRight.setTextColor(Color.WHITE); 
     yAxisRight.setAxisLineColor(Color.WHITE); 

     XAxis xAxis = chart.getXAxis(); 
     xAxis.setTextColor(Color.WHITE); 
     xAxis.setAxisLineColor(Color.WHITE); 
     xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
     xAxis.setAvoidFirstLastClipping(false); 
     xAxis.isDrawLabelsEnabled(); 
     xAxis.setDrawGridLines(false); 
     xAxis.setValueFormatter(new IAxisValueFormatter() { 

      @Override 
      public String getFormattedValue(float value, AxisBase axis) { 

       return xLabels.get((int)value); 
      } 


     }); 
     chart.animateX(2500); 
     chart.setData(data); 
     chart.invalidate(); 
    } 

enter image description here

Antwort

4

ich das gleiche Problem konfrontiert lösen sie die folgende Zeile hinzufügen:

xAxis.setGranularityEnabled(true); 

die link Überprüfen Sie für weitere Einzelheiten über die Achse.

+0

Es funktionierte dank Sie meinen Tag gerettet. wird in der Lage sein, die Antwort in ein paar Minuten zu akzeptieren :) Happy Coding –

+0

@MehvishFaisal Großartig zu hören, dass ich Ihren Tag gerettet habe. Vergiss nicht, die Antwort zu akzeptieren;) –

+0

warten auf das Einschalten :) –

Verwandte Themen