Search code examples
swiftios-charts

Rendering CombinedChartView using Swift Charts


I am using https://github.com/danielgindi/Charts and able to successfully render LineChartView. However, trying to render a very simple CombinedChartView renders as a blank chart. Also, any touch event will output "CGAffineTransformInvert: singular matrix."

@IBOutlet weak var chartView: CombinedChartView!

var lineData = [ChartDataEntry]()
lineData.append(ChartDataEntry(x: Double(0), y: drand48()))
let lineDataSet = LineChartDataSet(values: lineData, label: "line")

var barData = [BarChartDataEntry]()
barData.append(BarChartDataEntry(x: Double(0), y: drand48()))
let barDataSet = BarChartDataSet(values: barData, label: "bar")

let combinedData = CombinedChartData(dataSets: [lineDataSet, barDataSet])
chartView.data = combinedData
charView.notifyDataSetChanged()

Am I totally missing something here? Thank you.


Solution

  • I totally forgot about the demo that comes along with Charts. Basically, we need to set the data sets for each type of graph; then assign the data sets to the CombinedChartData.

    @IBOutlet weak var chartView: CombinedChartView!
    
    var lineData = [ChartDataEntry]()
    lineData.append(ChartDataEntry(x: Double(0), y: drand48()))
    let lineDataSet = LineChartDataSet(values: lineData, label: "line")
    let lineChartData = LineChartData(dataSets: [lineDataSet])
    
    var barData = [BarChartDataEntry]()
    barData.append(BarChartDataEntry(x: Double(0), y: drand48()))
    let barDataSet = BarChartDataSet(values: barData, label: "bar")
    let barChartData = BarChartData(dataSets: [barDataSet])
    
    let combinedData = CombinedChartData()
    combinedData.lineData = lineChartData
    combinedData.barData = barChartData
    chartView.data = combinedData
    charView.notifyDataSetChanged()