Itzik984
Itzik984

Reputation: 16764

iOS Charts Bar-Bar Combined-Charts

I'm using iOS charts library and trying to do a bar-bar combined chart.

I'm not sure this is possible but i did not see any limitation regarding on the documentation so i'm assuming there such an option.

This is the code i'm using to add the combined chart:

func createIntegratedChartForStat(stat:String, chart:CombinedChartView){
    chart.noDataText = "You need to provide data for the " + stat + " chart"

    var dataEntriesTotal: [BarChartDataEntry] = []
    var dataEntriesGood: [BarChartDataEntry] = []
    for i in 0..<gamesOrder.count {
        let outFromStat = playersFullData["b"]![stat]![i]
        var splittedData = outFromStat.split(separator: "/")
        let dataEntryTotal = BarChartDataEntry(x: Double(i), y: Double(splittedData[0])!)
        let dataEntryGood = BarChartDataEntry(x: Double(i), y: Double(splittedData[1])!)
        dataEntriesTotal.append(dataEntryTotal)
        dataEntriesGood.append(dataEntryGood)
    }

    let chartDataSetTotal = BarChartDataSet(values: dataEntriesTotal, label: stat + " Attempts")
    let chartDataSetGood = BarChartDataSet(values: dataEntriesGood, label: stat + " Successful")

    let chartData = CombinedChartData(dataSets: [chartDataSetTotal, chartDataSetGood])

    chart.data = chartData
}

All i'm getting is this:

enter image description here

And the following error if i touch the chart:

[Unknown process name] CGAffineTransformInvert: singular matrix.

Can this be done or am i missing something?

Upvotes: 1

Views: 579

Answers (1)

Itzik984
Itzik984

Reputation: 16764

It is possible, i just added the data to the combined chart in wrong. Adding the updated code:

func createIntegratedChartForStat(stat:String, chart:CombinedChartView){
    chart.noDataText = "You need to provide data for the " + stat + " chart"

    var dataEntriesTotal: [BarChartDataEntry] = []
    var dataEntriesGood: [BarChartDataEntry] = []
    for i in 0..<gamesOrder.count {
        let outFromStat = playersFullData["b"]![stat]![i]
        var splittedData = outFromStat.split(separator: "/")
        let dataEntryTotal = BarChartDataEntry(x: Double(i), y: Double(splittedData[0])!)
        let dataEntryGood = BarChartDataEntry(x: Double(i), y: Double(splittedData[1])!)
        dataEntriesTotal.append(dataEntryTotal)
        dataEntriesGood.append(dataEntryGood)
    }

    let chartDataSetTotal = BarChartDataSet(values: dataEntriesTotal, label: stat + " Attempts")
    chartDataSetTotal.colors = [NSUIColor .blue]
    let chartDataSetGood = BarChartDataSet(values: dataEntriesGood, label: stat + " Successful")
    chartDataSetGood.colors = [NSUIColor .green]

    let chartData = BarChartData(dataSets: [chartDataSetTotal, chartDataSetGood])

    let data: CombinedChartData = CombinedChartData()
    data.barData = chartData
    chart.data = data
}

Upvotes: 1

Related Questions