MPAndroidChart – Las primeras y últimas barras no se representan correctamente
-
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.
-
El eje también sólo está aumentando en 0.9 en lugar de 1. Para arreglar esto, ¿necesito implementar la interfaz AxisValueFormatter?
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;
- MPAndroidChart BarChart horizontal / vertical
- MPandroidchart Doble YAxis con diferentes escalas
- MPAndroidChart LineChart: Uso de fechas en lugar de cadenas para el eje X
- Ocultar puntos desde MPChart LineChart
- Diferentes degradados y color para cada conjunto de líneas de datos
- MPAndroidChart MarkerView
- ¿Cómo obtener bar clic evento de gráficos horizontalbar de MPcharts en android?
- MPAndroidChart StackedBarChart mostrando valores pero sin barras
Para responder a sus preguntas:
-
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 usarsetSpaceMin()
ysetSpaceMax()
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);
-
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í :
- Fragmento manejo de la orientación de la pantalla con pestañas en barra de acción
- Intellij idea que muestra error: no se pudo crear la máquina virtual java