轴上的数值似乎是重复的,而不是被替换的,如下面的截图所示,应该绘制“Jan”、“Feb”、“Mar”、“Apr”、“May”、“Jun”,而不是模拟器中的结果。
这里是代码。
class ViewController: UIViewController {
@IBOutlet weak var chartContainer: LineChartView!
let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 3.0]
override func viewDidLoad() {
super.viewDidLoad()
setChart(dataPoints: months, values: unitsSold)
}
func setChart(dataPoints: [String], values: [Double]) {
// Set up x axis
let xaxis = XAxis()
let chartFormatter = ChartFormatter(myArr: months)
// Array for entries
var dataEntries: [ChartDataEntry] = []
// Add new data entries
for i in 0..<dataPoints.count {
let dataEntry = ChartDataEntry(x: Double(i) , y: values[i], data: "a" as AnyObject? )
dataEntries.append(dataEntry)
chartFormatter.stringForValue(Double(i), axis: xaxis)
}
xaxis.valueFormatter = chartFormatter
chartContainer.xAxis.valueFormatter = xaxis.valueFormatter
// Configure the dataset
let lineChartDataSet = LineChartDataSet(values: dataEntries, label: "Units Sold")
let lineChartData = LineChartData(dataSet: lineChartDataSet)
chartContainer.data = lineChartData
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
@objc(ChartFormatter)
class ChartFormatter: NSObject, IAxisValueFormatter {
private var myArr: [String]!
init(myArr: [String]) {
self.myArr = myArr
}
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return myArr[Int(value)]
}
}