I'm very new to coding, so I'm sorry if this is a basic question. I am using iOS-Charts by Daniel Gindi (the most recent version on his Github) to set up a bar graph using the following code:
import UIKit
import Charts
class BarChartViewController: UIViewController {
var barChartView: BarChartView!
var days: [String]!
override func viewDidLoad() {
super.viewDidLoad()
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
let tasks = [1.0, 1.0, 1.5, 2.0, 3.0, 5.0, 0.0]
setChart(days, values: tasks)
}
func setChart(dataPoints: [String], values: [Double]) {
barChartView.noDataText = "You need to provide data for the chart."
var dataEntries: [BarChartDataEntry] = Array()
var counter = 0.0
for i in 0..<dataPoints.count {
counter += 1.0
let dataEntry = BarChartDataEntry(x: values[i], y: counter)
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Time")
let chartData = BarChartData(xVals: days, dataSet: chartDataSet)
barChartView.data = chartData
}
}
This prompts an error in func setChart:
In
let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Time")
Incorrect argument in call (have yVals, expected values). But if you change yVals to values, it prompts an error in the next line:
let chartData = BarChartData(xVals: days, dataSet: chartDataSet)
The error is: Cannot invoke initializer for type 'BarChartData' with an argument list of type '(xVals:[String]!, dataSet: BarChartDataSet)'
I took a look at ChartsDemo, but I'm not sure what I am exactly looking for (and I seem to be getting a compiling error when I try to build the demo).
Can someone help me out with this?
Try This
func setChart(dataPoints: [String], values: [Double]) {
barChartView.noDataText = "You need to provide data for the chart."
var dataEntries: [BarChartDataEntry] = Array()
var counter = 0.0
for i in 0..<dataPoints.count {
counter += 1.0
let dataEntry = BarChartDataEntry(x: values[i], y: counter)
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Time")
let chartData = BarChartData()
chartData.addDataSet(chartDataSet)
barChartView.data = chartData
}
Try this
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold") let chartData = BarChartData() chartData.addDataSet(chartDataSet) barChart.animate(xAxisDuration: 2.0, yAxisDuration: 2.0) chartDataSet.colors = ChartColorTemplates.colorful() barChart.data = chartData
full code
// // ChartViewController.swift // OEE // // Created by Andrew on 07.03.2018. // Copyright © 2018 Andrew. All rights reserved. // import UIKit import Foundation import Charts class ChartViewController: UIViewController, IAxisValueFormatter, ChartViewDelegate { func stringForValue(_ value: Double, axis: AxisBase?) -> String { return months[Int(value)] } @IBOutlet weak var barChart: BarChartView! var months: [String]! override func viewDidLoad() { super.viewDidLoad() months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0] //setChart(months, values: unitsSold) missing argument label dataPoints: in call setChart(dataPoints: months, values: unitsSold) } func setChart(dataPoints: [String], values: [Double]) { barChart.noDataText = "You need to provide data for the chart." var dataEntries: [BarChartDataEntry] = [] var counter = 0.0 for i in 0..<dataPoints.count { counter += 1.0 let dataEntry = BarChartDataEntry(x: values[i], y: counter) dataEntries.append(dataEntry) } let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold") let chartData = BarChartData() chartData.addDataSet(chartDataSet) barChart.animate(xAxisDuration: 2.0, yAxisDuration: 2.0) chartDataSet.colors = ChartColorTemplates.colorful() barChart.data = chartData //barChart.xAxis.ent barChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: months) barChart.xAxis.labelCount = months.count barChart.xAxis.labelPosition = .bottom } }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.