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.
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.
}
}