tutorial such danielgindi chart beautiful ios swift charts ios-charts

ios - such - swift charts animation



iOS-charts invierten la dirección del eje X (2)

En el archivo chartLegend.swift hay una variable:

public var direction = ChartLegendDirection.LeftToRight

Intenta hacer el cambio en ese archivo, podría resolver tu problema.

Tengo un gráfico de barras creado con los diagramas de iOS de Daniel Gindi . Representa datos históricos durante un período de tiempo. El problema que estoy teniendo es que los datos se trazan de izquierda a derecha (datos nuevos -> datos antiguos). Necesito que se represente como de derecha a izquierda (datos antiguos -> datos nuevos). Sé que puedo revertir el orden en que BarChartData los datos en BarChartData , pero luego tengo el problema de que el gráfico aún está alineado a la izquierda. Necesita estar alineado a la derecha. Encontré aquí una discusión sobre el tema de invertir el eje X y cómo podría resolverse (actualmente no es una característica incluida del marco), sin embargo, no puedo entender qué es lo que realmente se debe hacer. Aquí hay ejemplos de lo que necesito:

Así es como se ve actualmente mi gráfico:

Esto es lo que necesito que se vea así:

Mis preguntas

¿Hay alguna manera de invertir el eje x?

o

¿Hay alguna manera de alinear correctamente el gráfico?

Aquí hay algunos de mis códigos e intenta resolver el problema:

class ViewController: UIViewController { @IBOutlet weak var barChartView: BarChartView! //... func plotChart() { // Create history data //... barChartView.data = chartData // ''chartData'' is the BarChartData() containing all of the history information // No efect barChartView.legend.direction = .RightToLeft // Chart breaks barChartView.leftAxis.axisMinValue = 30 barChartView.leftAxis.axisMaxValue = 0 // Breaks the ability to zoom barChartView.setVisibleXRangeMinimum(CGFloat(40)) barChartView.setVisibleXRangeMaximum(CGFloat(1)) } }


Esta biblioteca no admite la alineación de derecha a izquierda directamente.

Consulte - https://github.com/danielgindi/Charts/issues/738

Tienes que implementar algo en el nivel de la biblioteca para hacerlo engañar de derecha a izquierda.

Respuesta editada

Después de trabajar un poco, encontré la solución, espero que esto te ayude.

Descargar código de muestra

import UIKit class ViewController: UIViewController { @IBOutlet weak var barChartView: BarChartView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let months = ["7/23/2016", "7/22/2016", "7/21/2016", "7/20/2016", "7/19/2016", "7/18/2016", "7/17/2016"] let unitsSold = [0.0, 0.0, 0.0, 0.0, 20.0, 50.0, 30.0] setChart(months, values: unitsSold) } func setChart(dataPoints: [String], values: [Double]) { var dataEntries: [BarChartDataEntry] = [] for i in 0..<dataPoints.count { if !values[i].isZero { let dataEntry = BarChartDataEntry(value: values[i], xIndex: i) dataEntries.append(dataEntry) } } let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "") let chartData = BarChartData(xVals: dataPoints, dataSet: chartDataSet) barChartView.data = chartData barChartView.leftAxis.enabled = false barChartView.descriptionText = "" barChartView.xAxis.labelPosition = .Bottom } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }