2016-10-02 2 views
0

Я использую iOSCharts для стрижа на @danielgindihttps://github.com/danielgindi/Chartsпроблемы с библиотекой Chart 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) XAxis этикетки разные, я не знаю, как установить их. 3) Я хочу показать оси оси x и оси y как int, а не double.

ответ

0

Ваша вторая проблема, проблема X метки, вызывается на этой линии:

пусть ВаЬаЕпЬга = BarChartDataEntry (х: Двойной (я), у: значения [я])

Значение x является быть установлен только i (как Double), когда я подозреваю, что вы имели в виду, чтобы установить его на Double(dateArray[i]), как это:

пусть dateArray = [26,27,28,29,30,01,02] позволяют значения = [11,0,5,0,0,0,0,0,0,0,0,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) 
} 

Этот код может быть замкнута с использованием zip и map:

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

hey @Alex, я пытался, но его не работает – Ranjit

1

Заканчивать мастер версия BarchartViewController в проекте ChartsDemo, он реализует оба ваши вопросы:

1) выравнивание левой оси, см:

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

В частности, вы хотите установить axisMinimum на левой оси, для примера, это было бы:

self.barChartView.leftAxis.axisMinimum = 0.0 

2) Ось X значения Форме чал.

Это немного сложнее. Вы можете взять DayAxisValueFormatter из ChartsDemo, но это код 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 и значения в синхронизации при обновлении диаграммы.