2016-07-20 20 views
5

I ein Balkendiagramm, haben unter Verwendung von Daniel Gindi iOS-charts gebaut. Es stellt Verlaufsdaten über einen bestimmten Zeitraum hinweg dar. Das Problem, das ich habe, ist, dass die Daten von links nach rechts geplottet werden (neue Daten -> alte Daten). Ich brauche es, um von rechts nach links (alte Daten -> neue Daten) geplottet zu werden. Ich weiß, dass ich die Reihenfolge I Eingangsdaten in BarChartData rückgängig machen kann, aber dann habe ich die Frage des Diagramms noch ausgerichtet verbleibt. Es muss richtig ausgerichtet sein. Ich fand eine Diskussion here redet über die Frage der Invertierung die x-Achse und wie es (derzeit keine enthaltenes Merkmal des Rahmens) aufgelöst werden kann, aber ich kann nicht herausfinden, was wirklich getan werden muss. Hier sind einige Beispiele von dem, was ich brauche:IOS-Diagrammen invertieren die X-Achsenrichtung

Dies ist, was zur Zeit mein Diagramm wie folgt aussieht:

enter image description here

Dies ist, was ich es muss wie folgt aussehen:

enter image description here

Meine Fragen

gibt es eine Möglichkeit zu Inver t die x-Achse?

oder

Gibt es eine Möglichkeit nach rechts das Diagramm ausrichten?

Hier einige meiner Code und versucht, das Problem zu beheben:

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)) 

    } 

} 
+0

haben Sie versucht, 'barChartView.legend.direction = .LeftToRight' zu ändern? –

+0

Ja, ich habe. Es scheint nicht, dass '.LeftToRight' oder'. RightToLeft 'machen alles. – Camon

+0

hast du meine antwort gelesen? –

Antwort

1

In der chartLegend.swift Datei gibt es eine Variable:

public var direction = ChartLegendDirection.LeftToRight

Versuchen Sie, die Änderung zu machen in Diese Datei könnte Ihr Problem lösen.

0

Diese Bibliothek unterstützt nicht direkt direkt nach links Ausrichtung. Siehe

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

Sie haben etwas auf Bibliotheksebene zu implementieren, um es rechts nach links Ausrichtung machen Trick.

Edited Antwort

Nach einigem um arbeiten, ich die Lösung gefunden, hoffe, dies wird Ihnen helfen, heraus.

Download sample code

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


} 

enter image description here

+0

Sie können die Antwort akzeptieren, wenn geholfen wird. – Hasya