我对编码非常陌生,所以如果这是一个基本问题,我很抱歉。我正在使用Daniel Gindi的iOS-Charts(他的Github上的最新版本)使用以下代码设置条形图:
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
}
}
这会在func setChart:
中提示错误在
let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Time")
调用中的参数不正确(具有yVals,期望值)。但是,如果将yVals更改为值,则会在下一行中提示错误:
let chartData = BarChartData(xVals: days, dataSet: chartDataSet)
错误是:无法为类型&#39; BarChartData&#39;调用初始化程序。使用类型&#39;(xVals:[String]!,dataSet:BarChartDataSet)的参数列表&#39;
我看了一下ChartsDemo,但我不确定我到底在寻找什么(当我尝试构建演示时,我似乎收到了编译错误。)
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
试试这个
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
}
答案 1 :(得分:0)
试试这个
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
完整代码
//
// 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
}
}