2016-09-23 4 views
1

작년의 데이터가있는 선형 차트를 만들려고합니다. 차트의 xAxis에있는 레이블을 지난 해의 달로 나타내려는 경우이 튜토리얼에서 충분히 쉽게 수행 할 수 있습니다. https://www.codebeaulieu.com/96/How-to-create-a-Combined-Bar-and-Line-chart-using-ios-charts. 그러나, 튜토리얼 코드 줄 :xAxis 레이블을 변경하는 방법 iOS 차트 (Swift 2.3)

"달", 문자열 배열을 나타냅니다 스위프트 2.3 차트의 업데이 트를 사용할 수없는
let data: LineChartData = LineChartData(xVals: months, dataSets: dataSets) 

. LineChartData에 사용할 수있는 유일한 생성자는이 두 가지 있습니다 :

LineChartData(dataSets: <[IChartDataSet]?>) 
LineChartData(dataSet: IChartDataSet?) 

는 그래서 xVals을 변경하기위한 옵션이 업데이트 후 사라진 것으로 보인다. 이 옵션이 다른 곳으로 옮겨 졌습니까? 아니면 iOS 차트에서 완전히 삭제 되었습니까?

+1

당신은 찾을 수

func getCurrentMonth()->Int? { let todayDate = Date() let myCalendar = NSCalendar(calendarIdentifier: .gregorian) let myComponents = myCalendar?.components(.month, from: todayDate) let month = myComponents?.month return month } 

이제 그래프에 값을 설정 여기 내 값의 포맷입니다 아래의 링크 [link] (http://stackoverflow.com/questions/39049188/how-to-add-strings-on-x-axis-in-ios-charts) – Lun

답변

1

잠시 후, 나는 결국 해결책을 발견했다. IAxisValueFormatter을 만들고 stringForValue 기능을 구현해야합니다. 예를 들어, 현재 달을 기준으로 지난 12 개월을 표시하도록 그래프의 서식을 지정하려고했습니다. > 얻기 위해 현재 월 - 차트 클래스의 다음

import UIKit 
import Charts 

class MonthNumberFormatter: NSObject, IAxisValueFormatter { 

    private let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
    private var startMonthIndex:Int! 

    convenience init(startMonthIndex: Int){ 
     self.init() 
     self.startMonthIndex = startMonthIndex 
    } 

    private func getMonth(index: Int) -> Int{ 
     return (index % months.count) 
    } 

    func stringForValue(_ value: Double, axis: AxisBase?) -> String{ 
     let monthIndex:Int = self.getMonth(index: Int(value) + self.startMonthIndex) 
     let month = months[monthIndex] 
     return month 
    } 
} 

:

let xAxis = self.chartView.xAxis 
let currentMonth = getCurrentMonth() 
xAxis.valueFormatter = MonthNumberFormatter(startMonthIndex: currentMonth!) 
관련 문제