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!