선형 차트의 데이터 포인트 레이블에 iOS 차트/차트 라이브러리를 사용하여 실제 번호 대신 맞춤 문자열을 표시하려고합니다. 내 x 및 y 축 레이블을 포맷하는 데 사용한 IAxisFormatter와 같은 것이 있는지 알고 싶습니다.iOS 차트에서 데이터 포인트 라벨을 맞춤 설정하는 방법은 무엇입니까?
내가 스위프트에서 정확히 어떻게하는지 누가 아는 지 궁금한가요? 온라인에서 예제를 찾을 수없는 것 같습니다. 감사!
선형 차트의 데이터 포인트 레이블에 iOS 차트/차트 라이브러리를 사용하여 실제 번호 대신 맞춤 문자열을 표시하려고합니다. 내 x 및 y 축 레이블을 포맷하는 데 사용한 IAxisFormatter와 같은 것이 있는지 알고 싶습니다.iOS 차트에서 데이터 포인트 라벨을 맞춤 설정하는 방법은 무엇입니까?
내가 스위프트에서 정확히 어떻게하는지 누가 아는 지 궁금한가요? 온라인에서 예제를 찾을 수없는 것 같습니다. 감사!
IValueFormatter
프로토콜을 ViewController에 추가하고 stringForValue(_:entry:dataSetIndex:viewPortHandler:)
방법 (1)을 구현해야합니다.
그런 다음 차트 데이터 세트 (2)의 ValueFormatter 대리인으로 ViewController를 설정하십시오. 제 경우 내 데이터 집합 Y의 값을 갖고있는
import UIKit
import Charts
class ViewController: UIViewController, IValueFormatter {
@IBOutlet weak var lineChartView: LineChartView!
// Some data
let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let unitsSold = [20.0, 4.0, 3.0, 6.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0]
// (1) Implementation the delegate method for changing data point labels.
func stringForValue(_ value: Double,
entry: ChartDataEntry,
dataSetIndex: Int,
implement delegate methodviewPortHandler: ViewPortHandler?) -> String{
return "My cool label " + String(value)
}
func setChart(dataPoints: [String], values: [Double]){
var dataEntries: [ChartDataEntry] = []
// Prepare data for chart
for i in 0..<dataPoints.count {
let dataEntry = ChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(dataEntry)
}
let lineChartDataSet = LineChartDataSet(values: dataEntries, label: "Units Sold")
let lineChartData = LineChartData(dataSets: [lineChartDataSet])
// (2) Set delegate for formatting datapoint labels
lineChartData.dataSets[0].valueFormatter = self
lineChartView.data = lineChartData
}
override func viewDidLoad() {
super.viewDidLoad()
setChart(dataPoints: months, values: unitsSold)
}
}
는 X 인덱스
이다// this shows date string instead of index
let dates = ["11/01", "11/02", "11/03", "11/04"...etcs]
chartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:months)
답변에 몇 가지 문맥을 추가하십시오. 코드 전용 답변은 SO에서 "고품질 게시물"로 간주되지 않습니다. 왜 그리고 어떻게 이것이 문제를 해결하는지에 관해서 1-2 문장을 쓸 시간을 가져라. –
내가 너무 많은 코드를 넣으면 대답이 복잡해질 것 같다. 그래서 저는 여기서 대답을 간단하게 유지하는 것이 더 간단하다고 생각합니다. –
코드가 아니라 컨텍스트를 추가하십시오. 단어로 코드 설명하기 –
그래 나는 것과 유사한 방법을 사용하여 값 내 축 레이블을 가져 오지. 내 질문에 내가 분명하지 않았을 수도있다. 가능하다면 데이터 포인트에서 실제 라벨을 수정하는 방법을 찾으려고합니다. 귀하의 답변 주셔서 감사합니다! – holycamolie
@ holycamolie, 알겠습니다. 나는 내 대답을 바꾸었다. stringForValue (_ : entry : dataSetIndex : viewPortHandler :) 메소드로 IValueFormatter 프로토콜을 구현해야합니다. 차트 데이터 세트의 valueFormatter 대리자로 설정합니다. – AlexSmet