2017-01-10 3 views
0

Im реализует барчер, и мне удалось назначить данные и метки. Однако, когда я загружаю барчарт, он показывает только 3/7 моих лейблов, и я не знаю, почему.Как отформатировать ярлыки xAxis диаграммы iOS

ярлыки отображаются, когда я взаимодействую с диаграммой, но они идут глюком.

Прошу прощения, если я не объяснил себя хорошо, но я загрузил .gif, показывающий мою проблему.

Мне очень нужна помощь в форматировании меток на xAxis. Это будет высоко ценится.

Заранее спасибо.

gif of problem

ответ

0

я думаю, что вы использовали эту библиотеку (https://github.com/danielgindi/Charts) ... я поставил й-ось, используя метод делегата диаграммы

func ChartView() 
{ 
    xAxis.drawGridLinesEnabled = false 
    xAxis.drawLabelsEnabled = true 
    xAxis.labelPosition = .Bottom 
    xAxis.axisMinimum = 0.0 
    xAxis.labelCount = ITEM_COUNT 
    xAxis.granularity = 1.0 
    xAxis.valueFormatter = self 

    self.updateChartData() 
} 

func updateChartData() 
{ 
    self.chartView.data = nil 
    self.setChartData() 
} 


func generateLineData() -> LineChartData 
{ 

    let d = LineChartData() 
    let entries = NSMutableArray() 
    var weightstr = String() 
    var datestr = String() 
entries.addObject(ChartDataEntry(x: Double(index), y: (Double(dic[setvalue]as! String)!))) 
let set = LineChartDataSet(values: entries as? [ChartDataEntry] , label: "X-title") 
    set.setColor(colorWithHexString("#FE1643")) 
    set.lineWidth = 2.5 
    set.setCircleColor(UIColor.whiteColor()) 
    set.circleHoleColor = NSUIColor.greenColor() 
    set.circleRadius = 5.0 
    set.circleHoleRadius = 2.5 
    set.fillColor = UIColor.redColor() 
    set.mode = .HorizontalBezier 
    set.valueTextColor = UIColor.lightGrayColor() 
    set.drawValuesEnabled = true 
    set.valueFont = UIFont(name: "Exo-Regular", size: FOntSIZE(10.0))! 
    set.axisDependency = .Left 
    d.addDataSet(set) 
    return d 
} 

func setChartData() 
    { 
     let data = CombinedChartData() 
     data.lineData = self.generateLineData() 
     self.chartView.xAxis.axisMaximum = Double(months.count)-1 
     self.chartView.data = data 
    } 

func chartValueSelected(chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) 
    { 
     print("chartValueSelected") 
    } 

func chartValueNothingSelected(chartView: ChartViewBase) 
{ 
    print("chartValueNothingSelected") 
} 

func stringForValue(value: Double, axis: AxisBase?) -> String 
{ 
    return months[Int(round(value)) % months.count] as! String 
} 
+0

я попытался с помощью метода 'stringForValue' но он дал мне тот же результат, что и раньше – Kasper

+0

Я бы отлаживал значение, которое передается stringForValue(). По моему опыту, библиотека диаграмм самостоятельно «выберет», для каких значений требуется форматирование. Таким образом, если ваша диаграмма имеет значения x 1,2,3,4,5, вы можете ввести простой текст (значение) в свой stringForValue(), чтобы проверить, что форматирование запрашивается для всех этих значений. – Alex

+0

@Alex i протестировал метод 'print (value)', и он напечатал '0, 1.0, 2.0 3.0, 4.0, 5.0, 6.0, 7.0' подумал, что у меня ошибочно, потому что массив меток' let labels: [String ] = "m", "t", "w", "thu", "fri", "sat", "sun" – Kasper

Смежные вопросы