es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Gráfico de barras de MPAndroidChart, ¿cómo saber el valor de x a partir del valor de y?

Mi problema es cómo saber o definir el otro valor (pareja) del eje y o eje x.
Mi código:

formatterValueY = new ValueFormatter() {
      @Override
      public String getAxisLabel(float valueY, AxisBase axis) {
          // ¿Cómo encontrar el valorX de valueY??
          // Lo necesito para devolverlo como una cadena.
          // Nota: Conozco la solución de búsqueda (bucle de datos de búsqueda),
          // pero es inútil si hay dos valores iguales y1=y2.

          // Este es un ejemplo de lo que quiero lograr,
          // es un ejemplo simple,

          float x = encontrarElValorRealXDeY(valueY);
          //o
          //float x = encontrarElValorRealXDeY(valueY,axis);

          if (x % 2 == 0) {
              return "Par:" + valueY;
          } else {
              return "Impar:" + valueY;
          }
      }
}

YAxis yAxis = myBarChar.getYAxis();
yAxis.setValueFormatter(formatterValueY);

Entonces, si hay alguna manera de encontrar el valor real de la pareja de Y usando el valorY y el eje.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para encontrar el valor X correspondiente a un valor Y dado en un gráfico, puedes usar el método getEntryIndex() del objeto de datos del gráfico. Aquí tienes un ejemplo de cómo puedes modificar tu código para lograr esto:

    formatterValueY = new ValueFormatter() {
        @Override
        public String getAxisLabel(float valueY, AxisBase axis) {
            // Obtener los datos del gráfico
            BarData data = myBarChar.getData();
            if (data != null) {
                // Encontrar el índice de la entrada con el valor Y dado
                int index = data.getDataSetByIndex(0).getEntryIndex(new Entry(valueY, 0));
                // Obtener el valor X correspondiente
                float x = data.getDataSetByIndex(0).getEntryForIndex(index).getX();
                // Comprobar si el valor X es par o impar
                if (x % 2 == 0) {
                    return "Par: " + valueY;
                } else {
                    return "Impar: " + valueY;
                }
            } else {
                return ""; // No hay datos disponibles
            }
        }
    }
    
    YAxis yAxis = myBarChar.getYAxis();
    yAxis.setValueFormatter(formatterValueY);
    

    En este ejemplo, primero obtenemos los datos del gráfico usando myBarChar.getData(). Suponemos que solo hay un conjunto de datos en el gráfico, por lo que usamos getDataSetByIndex(0) para obtener el objeto del conjunto de datos. Luego, usamos el método getEntryIndex() para encontrar el índice de la entrada con el valor Y dado. Finalmente, usamos getEntryForIndex() para obtener el objeto de entrada correspondiente y getX() para obtener el valor X.

    Ten en cuenta que este enfoque asume que no hay valores Y duplicados en el conjunto de datos. Si este no es el caso, es posible que debas modificar el código para manejar esta situación.

Comments are closed.