2016-05-13 6 views
0

Ich habe ein horizontales Diagramm mit mehreren BarChartDataSet (weil sie haben verschiedene Farben für BarChartDataEntry) Aber nachdem ich es zu BarChartData hinzugefügt UI sieht hässlich :( Die Frage ist also, wie ich so konfigurieren, dass die Breite des BarChartDataSet? fand ich zwei Eigenschaften barSpace und groupSpace kann aber nicht herausfinden, wie sie verwenden :)So richten BarChartDataSet Breite

Her e ist der Code

private func updateChartData() { 
     //days 
     let days = ["", "", "", "", "", "", ""] 
     var dataSets:[BarChartDataSet] = [] 

     let valuesArr = [[2.0, 3.0, 4.0, 3.0, 2.0, 0.2, 0.7], 
         [3.0, 5.0, 3.6, 2.0, 1.0, 0.2, 0.7], 
         [1.0, 2.0, 6.0, 4.0, 1.5, 0.2, 0.7], 
         [4.0, 3.2, 4.4, 3.0, 2.0, 0.2, 0.7], 
         [0.0, 3.0, 4.0, 3.1, 2.2, 0.2, 0.7], 
         [0.8, 2.1, 4.3, 3.4, 2.0, 0.2, 0.7], 
         [2.9, 3.3, 4.6, 3.7, 2.8, 0.9, 0.7]] 

     for (index, values) in valuesArr.enumerate() { 
      let entry = BarChartDataEntry.init(values: values, xIndex: index) 
      let set = BarChartDataSet.init(yVals: [entry], label: nil) 
//   set.barSpace = 1 
      set.drawValuesEnabled = false 
      set.colors = [UIColor.clearColor(), UIColor.greenColor(), UIColor.blackColor(), UIColor.redColor()] 

      dataSets.append(set) 
     } 

     let data = BarChartData.init(xVals: days, dataSets: dataSets) 
//  data.groupSpace = 4 
     self.contentView.data = data 

     let rightAxis = self.contentView.rightAxis 
     rightAxis.enabled = true 
     rightAxis.labelFont = UIFont.systemFontOfSize(10) 
     rightAxis.drawAxisLineEnabled = true 
     rightAxis.drawGridLinesEnabled = true 
     rightAxis.axisMinValue = max(0.0, self.contentView.data!.yMin - 1.0) 
     rightAxis.axisMaxValue = min(23.0, self.contentView.data!.yMax + 1.0) 
     rightAxis.labelCount = Int(rightAxis.axisMaxValue - rightAxis.axisMinValue) 
     rightAxis.axisMinValue = 1.0 
     rightAxis.axisMaxValue = 23.0 

    } 

und wie es aussieht, nachdem

Charts with multiple BarChartDataSet

Antwort

0

läuft glaube ich, dies durch eine Änderung der barSpace Eigenschaft erreicht werden kann. Beachten Sie, dass das in Prozent ist. Wenn der gesamte Platz für einen Balken 100% beträgt, bedeutet ein barSpace von 0,25, dass 25% davon Platz und 75% für den Balken sind.

+0

danke für die Antwort Ich habe versucht zu spielen es. Ich habe 7 Zeilen (7 Tage), das ist 100%. So ist jede Zeile etwa 14%. Wenn ich 0.14 für barSpace und barSpace setze sieht das immer noch nicht akzeptabel aus. Aber wenn ich 14 für diese Werte einstelle, bekomme ich [link] (http://s32.postimg.org/l4ipjitmt/Simulator_Screen_Shot_May_13_2016_4_24_49_PM.png) aber es ist nicht zentriert :( – artyom

+0

barSpace ist relativ zur Zeile, nicht das gesamte Diagramm. A barSpace von .14 würde es sehr dick machen. Das Zentrierungsproblem ist eine andere Frage. Sie können eine neue mit mehr Code fragen, wie Sie Ihre Grafik einrichten, oder Sie können oben bearbeiten. Aber ich müsste durch Ihre suchen Setup-Tabelle Funktion glaube ich – Shen

+0

Vielen Dank! Ich fand, dass iOS-Diagramme nicht unterstützen, dass ich brauche – artyom

0

fand ich, dass iOS-Charts nicht Abstand zwischen mehreren BarChartDataSet :(

unterstützt wird

1 dataSet bedeutet eine Bar, denken Sie daran, dass zuerst. Puting mehr als ein y Wert in einem Datensatz wird gibt Ihnen ein gestapeltes Balken Diagramm. Überprüfen sie die ChartsDemo aus. es gibt mehrere Balkendiagramme und gestapeltes Balken Charts.

Für die Abstandsprobleme, wenn ios-Charts es noch nicht unterstützt, dann Sie den Renderer außer Kraft setzen müssen, um zu bekommen was Sie wollen, aber das wird kompliziert und erfordert, dass Sie verstehen, wie die Balken positioniert und gerendert werden.

https://github.com/danielgindi/Charts/issues/365

So einen Datensatz verwenden, ich gehe. Farbe für jedes BarChartDataEntry werden Arrays hinzugefügt und zugewiesen BarChartDataSet

0

Haben Sie versucht, kann barWidth Variable innerhalb HorizontalBarChartRenderer Klasse in Methode ändern:

public func drawDataSet(context context: CGContext, dataSet: IBarChartDataSet, index: Int) 
+0

Ich sehe, dass es verwendet, um unten und oben zu berechnen, kann aber nicht herausfinden, wie es mir helfen kann. Haben Sie es versucht und es funktioniert ? – artyom

+0

Ich habe meine Antwort bearbeitet, schau in die HorizontalBarChartRenderer-Klasse. Ich habe mit barWidth = 0.1 und 0.5 gespielt hier sind die Ergebnisse: http: // imgur.com/tnXNfQ4 http://imgur.com/RySchfT – keyv

+0

Ja. Aber in meinem Fall habe ich mehrere Datensätze. Hast du die gleiche Situation? Weil ich mit einem Datensatz den Balken mit dem Balken der Eigenschaftsleiste ändern kann. Wenn wir mehrere Datensätze verwenden, stimmt etwas nicht mit der Mathematik von Recs für Balken (Leerzeichen zwischen Balken) Hier ist was ich habe mit barWidth = 1.0 http://i68.tinypic.com/2mw9wrs.jpg – artyom

Verwandte Themen