2016-10-02 64 views
0

我使用迅速iOSCharts通過@danielgindihttps://github.com/danielgindi/Charts問題與iOS圖表庫

因此,這裏是我的數據集

let dateArray = [26,27,28,29,30,01,02] 
     let values = [11.0,5.0,0.0,0.0,4.0,1.0,0.0] 

     var dataEntries: [BarChartDataEntry] = [] 

     for i in 0..<dateArray.count { 
      let dataEntry = BarChartDataEntry(x: Double(i), y: values[i]) 
      dataEntries.append(dataEntry) 
     } 

     let data = BarChartData() 
     let ds1 = BarChartDataSet(values: dataEntries, label: "Hello") 
     ds1.colors = [NSUIColor.red] 
     data.addDataSet(ds1) 




     self.barChartView.data = data 

     self.barChartView.fitBars = true 

     self.barChartView.gridBackgroundColor = NSUIColor.white 

     self.barChartView.chartDescription?.text = "" 

什麼,我希望是這樣的 enter image description here

但我得到的是這個

enter image description here

因此,大家可以看到的問題是低於

1)從圖形上面一個格開始,你會看到在底部 2空間)x軸的標籤是不同的,我不知道如何設置。 3)我想顯示x軸和y軸標籤爲int而不是double。

讓的DataEntry = BarChartDataEntry(X::雙(i)中,Y:值[I])

x值是

回答

0

你的第二個問題,在X標籤的問題,是在這條線引起被正好被設置爲i(double類型),當我懷疑你的意思是它設置爲Double(dateArray[i]),像這樣:

讓dateArray = [26,27,28,29,30,01,02] 讓值= [11.0,5.0,0.0,0.0,4.0,1.0,0.0]

var dataEntries: [BarChartDataEntry] = [] 

for i in 0..<dateArray.count { 
    let dataEntry = BarChartDataEntry(x: Double(dateArray[i]), y: values[i]) 
    dataEntries.append(dataEntry) 
} 

此代碼可以與使用的zipmap短路:

let dataEntries = zip(dateArray, values).map(BarChartDataEntry.init(x:y:)) 

此代碼將的dateArray每日期配對與來自value的值。然後,通過傳遞給BarChartDataEntry.init(x:y:)初始值設定項來轉換這些對。這種技術很好,因爲它不需要dataEntries是可變的。

+0

嘿謝謝,你能幫我解決第一個問題。爲什麼有差距 – Ranjit

+0

barChartView.legend.enabled = false – Alex

+0

哎@亞歷克斯,我試過,但它不工作 – Ranjit

1

退房在ChartsDemo項目BarchartViewController的主版本,它實現了您的兩個問題:

1)左軸對齊,請參閱:

https://github.com/danielgindi/Charts/blob/master/ChartsDemo/Classes/Demos/BarChartViewController.m#L76

具體來說,要設置axisMinimum在左軸,例如它會是:

self.barChartView.leftAxis.axisMinimum = 0.0 

2)X軸值forma擬合。

這一個有點棘手。您可以借用ChartsDemo中的DayAxisValueFormatter,但這是Objective-C代碼,所以您需要熟悉將Objective-C添加到項目中。

你也可以得到你問什麼了通過使您的視圖控制器IAxisValueFormatter和實施這樣的:

class MyViewController: UIViewController, IAxisValueFormatter { 

    var dateArray: [Int] = [26,27,28,29,30,01,02] //member variable 

    func stringForValue(_ value: Double, axis: AxisBase?) -> String { 
     return dateArray[i] 
    } 

    //edit: forgot to say this earlier, you need to do this somewhere in your bar graph setup code 
    self.barChwrtView.xAxis.formatter = self 
} 

這是給你保持dateArray和值同步每當更新圖表。

0

嘗試leftAxis.axisMinValue = 0.0