设置X&时出错iOS-Charts中的Y轴(Xcode 7.3.1)

时间:2016-08-18 01:46:54

标签: ios swift xcode charts ios-charts

我对编码非常陌生,所以如果这是一个基本问题,我很抱歉。我正在使用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,但我不确定我到底在寻找什么(当我尝试构建演示时,我似乎收到了编译错误。)

有人可以帮我解决这个问题吗?

2 个答案:

答案 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

    
}
}