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; 

3 Solutions collect form web for “MPAndroidChart – Las primeras y últimas barras no se representan correctamente”

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

  • Formato de etiqueta de fecha / hora de eje-x de MPAndroidChart
  • MPAndroidChart: Ocultar etiquetas de valor en un gráfico de barras apilado
  • Java.lang.RuntimeException: Paralleable encontró IOException escribiendo objeto serializable en Android que pasa el objeto ArrayList
  • MPAndroidChart - Las etiquetas de la leyenda están siendo cortadas
  • Eliminar etiquetas de puntos del gráfico de líneas mediante la biblioteca MPAndroidChart
  • Cómo ocultar valores dibujados en MPAndroidChart?
  • Cómo crear un BarChart con barras agrupadas con MPAndroidChart?
  • Gráfico de barras apiladas de Android
  • Utilizar MPChartLibrary dentro de un fragmento
  • Cómo resaltar varios valores con MPAndroidChart?
  • Dibuja el valor de la barra en la barra
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.