簡體   English   中英

使用 iOS 圖表的組合圖表(折線圖和條形圖)

[英]Combined Chart (line- and bar chart) using iOS-Charts

我正在嘗試在 swift (iOS-charts) 中組合折線圖和條形圖。 x 軸和 y 軸似乎都已正確縮放,但數據未顯示在圖表上。 我錯過了什么? 在此處輸入圖片說明

import UIKit
import Charts

class CombinedChartsTest: UIViewController {


@IBOutlet weak var combinedChart: CombinedChartView!


let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let unitsSold = [2.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 17.0, 2.0, 4.0, 5.0, 4.0]

override func viewDidLoad() {
    super.viewDidLoad()

    setChart(months, yValuesLineChart:  unitsSold, yValuesBarChart: unitsSold)
}

func setChart(xValues: [String], yValuesLineChart: [Double], yValuesBarChart: [Double]) {
    combinedChart.noDataText = "Please provide data for the chart."

    var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
    var yVals2 : [BarChartDataEntry] = [BarChartDataEntry]()

    for i in 0..<xValues.count {

        yVals1.append(ChartDataEntry(value: yValuesLineChart[i], xIndex: i))
        yVals2.append(BarChartDataEntry(value: yValuesBarChart[i] - 1, xIndex: i))

    }

    let lineChartSet = LineChartDataSet(yVals: yVals1, label: "Line Data")
    let barChartSet: BarChartDataSet = BarChartDataSet(yVals: yVals2, label: "Bar Data")

    let data: CombinedChartData = CombinedChartData(xVals: xValues, dataSets: [lineChartSet,barChartSet])

    combinedChart.data = data

}
}

我終於設法弄清楚缺少什么。

import UIKit
import Charts

class CombinedChartsTest: UIViewController {


@IBOutlet weak var combinedChartView: CombinedChartView!


let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let unitsSold = [2.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 17.0, 2.0, 4.0, 5.0, 4.0]

override func viewDidLoad() {
    super.viewDidLoad()

    setChart(months, yValuesLineChart:  unitsSold, yValuesBarChart: unitsSold)
}

func setChart(xValues: [String], yValuesLineChart: [Double], yValuesBarChart: [Double]) {
    combinedChartView.noDataText = "Please provide data for the chart."

    var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
    var yVals2 : [BarChartDataEntry] = [BarChartDataEntry]()

    for i in 0..<xValues.count {

        yVals1.append(ChartDataEntry(value: yValuesLineChart[i], xIndex: i))
        yVals2.append(BarChartDataEntry(value: yValuesBarChart[i] - 1, xIndex: i))

    }

    let lineChartSet = LineChartDataSet(yVals: yVals1, label: "Line Data")
    let barChartSet: BarChartDataSet = BarChartDataSet(yVals: yVals2, label: "Bar Data")


    let data: CombinedChartData = CombinedChartData(xVals: xValues)
    data.barData = BarChartData(xVals: xValues, dataSets: [barChartSet])
    data.lineData = LineChartData(xVals: xValues, dataSets: [lineChartSet])

    combinedChartView.data = data

}
}

我是這樣用的

`

func setChart(xValues: [String], yValuesLineChart: [Double], yValuesBarChart: [Double] , combinedChartView:CombinedChartView) {
    combinedChartView.noDataText = "Please provide data for the chart."

    var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
    var yVals2 : [BarChartDataEntry] = [BarChartDataEntry]()

    for i in 0..<xValues.count {

        yVals1.append(ChartDataEntry(value: yValuesLineChart[i], xIndex: i))
        yVals2.append(BarChartDataEntry(value: yValuesBarChart[i] , xIndex: i))

    }


    let lineChartSet = LineChartDataSet(yVals: yVals1, label: "Line Data")
    lineChartSet.colors = [UIColor(red: 168.0/255.0, green: 164.0/255.0, blue: 164.0/255.0, alpha: 1.0)]

    // lineChartSet.mode = .CubicBezier
    lineChartSet.lineWidth = 5.0
    lineChartSet.drawCirclesEnabled = false
    //lineChartSet.drawFilledEnabled = true
    /*lineChartSet.colors = [UIColor(red: 0, green: 0, blue: 1, alpha: 0.0)]
     lineChartSet.fillColor = UIColor(red: 1, green: 0, blue: 0, alpha: 1.0)
     lineChartSet.fillAlpha = 0.8*/



    let barChartSet: BarChartDataSet = BarChartDataSet(yVals: yVals2, label: "Bar Data")
    // barChartSet.colors = ChartColorTemplates.colorful()
    barChartSet.barSpace = 0.65

    barChartSet.barShadowColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0)// If alpha is > 0, then grey bars will appear.



    let data: CombinedChartData = CombinedChartData(xVals: xValues)
    data.barData = BarChartData(xVals: xValues, dataSets: [barChartSet])
    data.lineData = LineChartData(xVals: xValues, dataSets: [lineChartSet])
    //barChartView.leftAxis.startAtZeroEnabled = true
    combinedChartView.leftAxis.axisMinValue = 0

    combinedChartView.data = data

    combinedChartView.leftAxis.drawLabelsEnabled = false
    combinedChartView.rightAxis.drawLabelsEnabled = false
    //barChartView.leftAxis.startAtZeroEnabled = true
    combinedChartView.leftAxis.axisMinValue = 0
    combinedChartView.descriptionText = ""
    combinedChartView.legend.enabled = false
    combinedChartView.backgroundColor = UIColor.clearColor()
    //  combinedChartView.barSpace = 0.65


    combinedChartView.leftAxis.gridColor = UIColor(red: 179.0/255.0, green: 179.0/255.0, blue: 179.0/255.0, alpha: 0.2)
    combinedChartView.rightAxis.gridColor = UIColor(red: 179.0/255.0, green: 179.0/255.0, blue: 179.0/255.0, alpha: 0.2)

}

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM