MPAndroidChart – Las primeras y últimas barras no se representan correctamente

  1. En el gráfico de barras que estoy creando, la primera y la última fila se cortan constantemente por la mitad (incluso si agrego barras adicionales). Esto también hace que los valores sobre las barras estén fuera de lugar. Estoy inflando esto dentro de un fragmento.

  2. El eje también sólo está aumentando en 0.9 en lugar de 1. Para arreglar esto, ¿necesito implementar la interfaz AxisValueFormatter?

Imagen:

Introduzca aquí la descripción de la imagen

Código: .java

chart = (BarChart) view.findViewById(R.id.chart1); // Chart settings chart.setDrawGridBackground(false); chart.setHighlightFullBarEnabled(true); chart.setDrawBarShadow(false); chart.setDrawValueAboveBar(true); chart.setDescription(""); // Settings for X-Axis XAxis xAxis = chart.getXAxis(); xAxis.setDrawGridLines(false); xAxis.setEnabled(true); xAxis.setDrawLabels(true); xAxis.setPosition(XAxisPosition.BOTTOM); // Settings for Y-Axis YAxis leftAxis = chart.getAxisLeft(); YAxis rightAxis = chart.getAxisRight(); leftAxis.setAxisMinValue(0f); rightAxis.setAxisMinValue(0f); BARENTRY = new ArrayList<>(); BarEntryLabels = new ArrayList<String>(); BARENTRY.add(new BarEntry(2f, 1)); BARENTRY.add(new BarEntry(3f, 2)); BARENTRY.add(new BarEntry(4f, 3)); BARENTRY.add(new BarEntry(5f, 4)); BARENTRY.add(new BarEntry(6f, 5)); Bardataset = new BarDataSet(BARENTRY, "Projects"); Bardataset.setColors(ColorTemplate.COLORFUL_COLORS); BARDATA = new BarData(Bardataset); chart.setData(BARDATA); chart.invalidate(); // refresh chart.animateY(1500); return view; 

Para responder a sus preguntas:

  1. Para mostrar correctamente tus barras, necesitas ajustar las barras, como esta (no me preguntes por qué no está habilitada de forma predeterminada):

     chart.setFitBars(true) 

    Puede encontrar más información en los javadocs de BarChart :

    setFitBars(boolean enabled) : Añade la mitad del ancho de barra a cada lado del rango del eje x para permitir que las barras del barchart se muestren completamente.

    Si tiene un CombinedChart puede usar setSpaceMin() y setSpaceMax() para añadir un espacio adicional en ambos extremos del eje:

     XAxis xAxis = chart.getXAxis(); xAxis.setSpaceMin(barData.getBarWidth() / 2f); xAxis.setSpaceMax(barData.getBarWidth() / 2f); 
  2. En la actualidad es imposible infundir las posiciones de valor que se representan en el eje. La creación de un ValueFormatter sólo cambia el texto visualizado, no la posición real de la etiqueta.

Por favor use setAxisMinimum y setAxisMaximum , funcionará perfectamente!

Después de instanciar tu BarData , solo necesitas

 chart.getXAxis().setAxisMinimum(-data.getBarWidth() / 2); chart.getXAxis().setAxisMaximum(count-data.getBarWidth() / 2);` 

No hay necesidad de setFitBars , y el conteo es BARENTRY .

Si el problema es sólo con la primera barra, puede utilizar valores negativos para el mínimo del eje:

 xAxis.setAxisMinimum(-0.5f); 

Como en la respuesta a esta pregunta aquí :

  • Ocultar puntos desde MPChart LineChart
  • MPAndroidChart BarChart xValues ​​Issue
  • MPAndroidChart - Eliminar borde superior / eje desde v2
  • MPAndroidChart StackedBarChart mostrando valores pero sin barras
  • Cómo desactivar la línea de resaltado en MPAndroidChart?
  • MPAndroidChart LineChart personalizado resaltar dibujable
  • MarkerView sale del gráfico para el último punto del gráfico
  • Forzar BarChart eje Y etiquetas a ser enteros?
  • Ángulo de etiqueta XAxis en MPAndroidChart
  • Cómo ocultar leyendas y el eje en MPAndroidChart?
  • Cómo ocultar los valores del eje x en Barchart de mpandroidChart
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.