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

匿名 (未验证) 提交于 2019-12-03 08:59:04

问题:

I am trying to combine a line- and bar chart in swift (iOS-charts). Both the x- and the y-axis seem to be scaled properly, but the data is not showing on the chart. What am I missing?

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  } } 

回答1:

I finally managed to figure out what was missing.

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  } } 


回答2:

I used like this

`

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)  } 

`



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!