MPAndroidChart set center vertical line

Quiero establecer una línea vertical en el centro de LineChart como esto:

Introduzca aquí la descripción de la imagen

Al desplazarse a cada punto, puede notificar para cambiar la fecha a continuación (el campo de fecha naranja). Y puede moverse a la izquierda oa la derecha mediante programación haciendo clic en el botón de flecha.

Actualmente, puedo establecer viewport y permitir que se mueva al centro con este código:

 LineData data = new LineData(xVals, dataSets); mChart.setScaleMinima((float) data.getXValCount() / 7f, 1f); mChart.moveViewTo(0, 7, YAxis.AxisDependency.LEFT); 

Y obtener el resultado:

Introduzca aquí la descripción de la imagen

¿Cómo puedo dibujar y establecer una línea vertical como arriba?

Actualización :

Para el oyente, creo que OnChartGestureListener onChartTranslate(MotionEvent me, float dX, float dY) puede ayudar. Lo que necesito es la distancia entre 2 puntos y cómo calcular cuántos puntos hay en el puerto de vista actual. ¿Alguien sabe eso?

¿Ha intentado usar getEntryByTouchPoint en su gráfico suministrando las coordenadas xey del centro del gráfico?

public Entry getEntryByTouchPoint(float x, float y)

Devuelve el objeto Entry que se muestra en la posición tocada del gráfico

Echa un vistazo al método

 protected void drawGridBackground(Canvas c) { 

En la clase BarLineChartBase (padre de un LineChart). En ese método usted tiene todos los datos para dibujar su línea justo en el medio. Algo como esto

 RectF rectF = mViewPortHandler.getContentRect(); float xMiddle = (rectF.right - rectF.left)/2; Paint p = new Paint(); p.setColor(Color.BLACK); c.drawLine(xMiddle, rectF.bottom, xMiddle, rectF.top, p); 

Tal vez es demasiado tarde, pero aquí está mi respuesta. Está codificado en Swift usando gráficos (puerto MPAndroidCharts para iOS) pero API es 99% igual;)

 let verticalPointEntry = ChartDataEntry(x: xValue, y: yValue) let dataSet = LineChartDataSet(values: [verticalPointEntry], label: "") dataSet.drawCirclesEnabled = false dataSet.drawValuesEnabled = false dataSet.setDrawHighlightIndicators(true) dataSet.drawHorizontalHighlightIndicatorEnabled = false dataSet.highlightColor = UIColor.white dataSet.highlightLineWidth = 1 let highlightPoint = Highlight(x: xValue, y: yValue, dataSetIndex: datasetIndex) self.highlightValues([highlightPoint]) // "yourNormalDataSet" is your regular dataSet in which you want to display vertical line over it let chartData = LineChartData(dataSets: [yourNormalDataSet, dataSet]) self.data = chartData self.data?.notifiyDataChanged() self.notifyDataSetChanged 

Esto mostrará una línea vertical sobre el punto definido por su variable xValue .

¡Espero eso ayude!

  • MPAndroidChart LineChart personalizado resaltar dibujable
  • ¿Cómo hacer que un CombinedChart tenga dos escalas diferentes en MPAndroidChart?
  • MPAndroidChart ¿hay una manera de establecer diferentes colores para diferentes bares?
  • Mostrar valores de eje dentro de las barras BarChart de la biblioteca MPAndroidChart
  • Cómo MPAndroidChart mostrar todos los valores xaxis
  • Mpandroidchart - ¿Cómo puedo evitar los valores repetidos en Y-Axis?
  • MPAndroidChart BarChart horizontal / vertical
  • MPAndroidChart eliminar leyenda
  • ¿Cómo quitar la descripción del gráfico en MPAndroidChart?
  • Cuadro de MPAndroid para hacer un gráfico de línea suave
  • MPAndroidChart - ¿Cómo definir la descripción en otra posición?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.