2016-07-29 8 views
1

Ich verwende CHARTS-Bibliothek in swift. https://github.com/danielgindi/ChartsMehrere Farben zu Balkendiagrammen Swift übereinander

Ich habe Erfolg in der Erstellung von Kreisdiagramm und Balkendiagramm. Jetzt möchte ich Balkendiagramm mit einem "x" -Wert und 2 "y" -Werten erstellen.

Ich erstellte das Balkendiagramm mit zwei verschiedenen Werten. Aber ich bin nicht in der Lage, die Farben für sie zu setzen Ich übergab das Farb-Array, um Methode setColors zu delegieren, aber es nimmt die letzte Farbe aus dem Array.

Kann mir bitte jemand für die verschiedenen Farben auf Balkendiagramm führen.

Hier ist mein Code BarChart Bibliothek

months = ["HR","Operations","iOS","Android","PHP","Support","Testing","Designer"] 
     let unitsSold = [10.0,20.0,30.0,20.0,20.0,10.0,15.0,20.0] 
     let unitsSold1 = [20.0,30.0,50.0,40.0,30.0,20.0,45.0,50.0] 

     let barChartClass = self.storyboard!.instantiateViewControllerWithIdentifier("BarChartViewControllerID") as! BarChartViewController 
     self.addChildViewController(barChartClass) 
     barChartClass.view.frame = CGRectMake(20, 20, 740, 900) 
     barChartClass.barChartView.doubleTapToZoomEnabled = false 
     barChartClass.barChartView.setScaleEnabled(false) 
     self.view.addSubview(barChartClass.view) 
     barChartClass.barChartView.legend.enabled = false 

     barChartClass.setChartBarGroupDataSet(months, values: unitsSold, values2: unitsSold1, sortIndex: 0) 

Und das ist der Aufruf der Methode für setChartBarGroupDataSet

func setChartBarGroupDataSet(dataPoints: [String], values: [Double], values2: [Double],sortIndex:Int) 
    { 

     var dataEntries: [BarChartDataEntry] = [] 

     for i in 0..<dataPoints.count 
     { 
      let dataEntry = BarChartDataEntry(value: values[i], xIndex: i) 
      let dataEntry1 = BarChartDataEntry(value: values2[i], xIndex: i) 
      dataEntries.append(dataEntry) 
      dataEntries.append(dataEntry1) 
     } 

     let chartDataSet = BarChartDataSet(yVals: dataEntries, label: " ") 

     let COLOR_SET : [UIColor]! 
     COLOR_SET = [UIColor.redColor(),UIColor.greenColor()] 

     chartDataSet.setColors(COLOR_SET, alpha: 1.0) 

     let dataSets: [BarChartDataSet] = [chartDataSet] 

     let data = BarChartData(xVals: dataPoints, dataSets: dataSets) 

     barChartView.data = data 

     barChartView.descriptionText = "" 

     barChartView.rightAxis.drawGridLinesEnabled = false 
     barChartView.rightAxis.drawAxisLineEnabled = false 
     barChartView.rightAxis.drawLabelsEnabled = false 

     barChartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .EaseInBounce) 
    } 

Was ich will, ist so etwas wie dieses

enter image description here

zu nennen Danke im Voraus.

+0

Wie haben Sie auf jeder Bar, die Etiketten zu zentrieren? –

Antwort

2

Dies ist ein gestapeltes Balkendiagramm. In den Demos von Charts können Sie ein gestapeltes Balkendiagramm sehen.

Grundsätzlich erhielt jeder BarChartDataEntry entweder einen Wert oder ein Array von Werten. Übergeben Sie eine Reihe von Werten - und Sie sind gut zu gehen!

let entry = BarChartDataEntry(values: [4.6, 3.8], xIndex: 0) dataset.colors = [UIColor.cyanColor(), UIColor.greenColor()] dataset.stackLabels = ["Inactive inventory", "Active inventory"]

im doppelten Frage beantwortet zu: https://github.com/danielgindi/Charts/issues/1324

+0

Danke für die Lösung, es funktioniert. Entschuldigung für die späte Antwort, da ich das Array für Values ​​dynamisch verwaltet habe und erfolgreich war. Danke für die Hilfe @ daniel.gindi – Sagar