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í :

  • Eliminar etiquetas de puntos del gráfico de líneas mediante la biblioteca MPAndroidChart
  • MPAndroidChart con valores nulos
  • El fondo de gráfico de sectores cambia cuando el segmento es demasiado pequeño en MPAndroidChart
  • Cómo hacer un gráfico en tiempo real de rollingwindow usando MPAndroidChart
  • Cómo establecer el valor de incremento para el eje Y en MPAndroidChart
  • MPAndroidChart BarChart Grouped DataSets
  • Dibujar línea vertical en el centro de un gráfico de líneas (indicador)
  • MPAndroidChart - Las etiquetas de la leyenda están siendo cortadas
  • Obtener una IllegalArgumentException al agregar datos de línea
  • Android-MPChartLibrary no se puede reemplazar por defecto "No hay datos de gráfico de texto disponibles"
  • Forzar BarChart eje Y etiquetas a ser enteros?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.