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?

3 Solutions collect form web for “MPAndroidChart set center vertical line”

¿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!

  • ¿Cómo puedo reducir el tiempo que MPAndroidChart gasta para mostrar datos?
  • MPAndroidChart ocultar rejilla de fondo
  • MPAndroidChart LineChart: Uso de fechas en lugar de cadenas para el eje X
  • MPAndroidChart no está actualizando
  • MPAndroidChart: Sólo se muestran etiquetas alternativas en el eje x cuando aparecen más entradas
  • Bibliotecas de gráficos Android
  • Cómo ocultar valores dibujados en MPAndroidChart?
  • Formato de etiqueta de fecha / hora de eje-x de MPAndroidChart
  • Cómo ocultar leyendas y el eje en MPAndroidChart?
  • MPAndroidChart gráfico de relleno
  • MPAndroidChart MarkerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.