studio pie mpchart example ejemplo docs developer chart bar android charts mpandroidchart

pie - mpandroidchart ejemplo



MPAndroidChart establece la lĂ­nea vertical central (3)

Eche un vistazo al método

protected void drawGridBackground(Canvas c) {

en la clase BarLineChartBase (principal para un LineChart). En ese método tienes todos los datos para dibujar tu línea 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);

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

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

Actualmente, puedo establecer la ventana gráfica y permitir mover 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 obtiene el resultado:

¿Cómo puedo dibujar y establecer una línea vertical como la de 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 utilizar getEntryByTouchPoint en su gráfico que proporciona las coordenadas xey del centro de la tabla?

public Entry getEntryByTouchPoint(float x, float y)

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


Quizás es demasiado tarde, pero esta es mi respuesta. Está codificado en Swift usando Charts (puerto MPAndroidCharts para iOS) pero API es 99% el mismo;)

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 vercital sobre el punto definido por su variable xValue .

¡Espero eso ayude!