2016-05-13 323 views
0

我有多個BarChartDataSet(因爲他們有不同的顏色BarChartDataEntry)水平的圖表,但之後我把它添加到BarChartData UI看起來醜陋:( 所以,問題是我如何可以配置BarChartDataSet? 的寬度,我發現兩個屬性barSpacegroupSpace,但無法弄清楚如何使用它們:)如何設置BarChartDataSet寬度

她e是代碼

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 

    } 

,它的樣子運行

Charts with multiple BarChartDataSet

回答

0

後,我相信,這可以通過更改barSpace屬性來實現。請注意,這是百分比。如果酒吧的整個空間是100%,那麼0.25的酒吧空間意味着25%是空間,75%是酒吧。

+0

感謝您對我試着玩的答覆 它。我有7行(7天),是100%。所以每行約爲14%。如果我爲barSpace設置0.14,barSpace看起來仍然不可接受。但是,如果我爲這些值設置了14,我得到了[鏈接](http://s32.postimg.org/l4ipjitmt/Simulator_Screen_Shot_May_13_2016_4_24_49_PM.png),但它不居中:( – artyom

+0

barSpace是相對於行而不是整個圖表。 .14的barSpace會使它變得非常厚實,居中問題是一個不同的問題,你可以用更多的代碼來詢問你如何設置你的圖表,或者你可以在上面進行編輯,但是我需要瀏覽你的設置圖表功能我相信 – Shen

+0

謝謝!我發現iOS圖表不支持我需要的東西 – artyom

0

我發現,iOS的圖表是不支持多BarChartDataSet :(之間的間距

1數據集是指一個酒吧,記得第一次。Puting不止一個Y內的一個數據集將 值給你一個堆積條形圖圖檢查 出來的ChartsDemo。有多種條形圖和堆積條形圖 圖表。

對於那些間距的問題,如果IOS-圖表不支持它,那麼 你可能需要重寫渲染器獲得你想要什麼,但是這個 會變得複雜,並且需要您瞭解定位和呈現條紋的方式。

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

所以我打算使用一個數據集。顏色爲每個BarChartDataEntry將被添加到陣列,並分配給BarChartDataSet

0

您是否嘗試過在方法改變barWidth變量中HorizontalBarChartRenderer類:

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

我發現它用來計算底部和頂部,但無法弄清楚它是如何幫助我的。 ? – artyom

+0

我已經編輯了我的答案,看看Horizo​​ntalBarChartRenderer類。 我玩過barWidth = 0.1和0.5 結果如下: http:// imgur。com/tnXNfQ4 http://imgur.com/RySchfT – keyv

+0

是的。但在我的情況下,我有多個數據集。你有同樣的情況嗎?因爲使用一個數據集,我可以使用屬性欄空間更改欄。 當我們使用多個數據集有關酒吧rects的數學問題(酒吧之間的空間) 這裏是我有barWidth = 1.0 http://i68.tinypic.com/2mw9wrs.jpg – artyom