Shahryar Tavakkoli
Shahryar Tavakkoli

Reputation: 93

How to make a combined chart of "line chart" and "bar chart"?

i found methods for swift2 but couldn't make a swift3 one. Can anybody help me making swift3 code of these combined chart?

I found these codes:

 months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    unitsSold = [20.0, 4.0, 6.0,20.0, 4.0, 6.0,20.0, 4.0, 6.0,20.0, 4.0, 6.0]
    databozi =  [10.0, 11.0, 12.0,10.0, 11.0, 12.0,10.0, 11.0, 12.0,10.0, 11.0, 12.0]


func convertCombines(dataEntryX forX:[String],dataEntryY forY: [Double], dataEntryZ forZ: [Double]) {


    var dataEntries = [BarChartDataEntry]()
    var dataEntrieszor = [ChartDataEntry]()


    for i in 0..<forX.count {

        dataEntries.append(BarChartDataEntry(x: forZ[i], y: Double(i)))
        dataEntrieszor.append(ChartDataEntry(x: forY[i], y: Double(i)))

    }
    let lineChartSet = LineChartDataSet(values: dataEntrieszor, label: "Line Data")
    let lineChartData = LineChartData(dataSets: [lineChartSet])

    let barChartSet = BarChartDataSet(values: dataEntries, label: "Bar Data")
    let barChartData = BarChartData(dataSets: [barChartSet])

    //ui
    lineChartSet.setColor(UIColor.red)
    lineChartSet.setCircleColor(UIColor.red)

    let comData = CombinedChartData(dataSets: [lineChartSet,barChartSet])
    comData.barData = barChartData
    comData.lineData = lineChartData

    combinedChartViewOut.data = comData
    combinedChartViewOut.notifyDataSetChanged()

}

my Example code pic my Example code pic but

need code like : Example Combined pic

Upvotes: 0

Views: 1544

Answers (1)

Shahryar Tavakkoli
Shahryar Tavakkoli

Reputation: 93

fix code :

func convertCombines(dataEntryX forX:[String],dataEntryY forY: [Double], dataEntryZ forZ: [Double]) {


    var dataEntries: [BarChartDataEntry] = []
    var dataEntrieszor: [ChartDataEntry] = [ChartDataEntry]()

    for (i, v) in forY.enumerated() {
        let dataEntry = ChartDataEntry(x: Double(i), y: v, data: forX as AnyObject?)
        dataEntrieszor.append(dataEntry)
    }

    for (i, v) in forZ.enumerated() {
        let dataEntry = BarChartDataEntry(x: Double(i), y: v, data: forX as AnyObject?)
        dataEntries.append(dataEntry)
    }


    let lineChartSet = LineChartDataSet(values: dataEntrieszor, label: "Line Data")
    let lineChartData = LineChartData(dataSets: [lineChartSet])

    let barChartSet = BarChartDataSet(values: dataEntries, label: "Bar Data")
    let barChartData = BarChartData(dataSets: [barChartSet])

    //ui
    lineChartSet.setColor(UIColor.red)
    lineChartSet.setCircleColor(UIColor.red)

    let comData = CombinedChartData(dataSets: [lineChartSet,barChartSet])
    comData.barData = barChartData
    comData.lineData = lineChartData

    combinedChartViewOut.data = comData
    combinedChartViewOut.notifyDataSetChanged()

    combinedChartViewOut.xAxis.valueFormatter = IndexAxisValueFormatter(values:months)
    combinedChartViewOut.xAxis.granularity = 1

    combinedChartViewOut.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .easeInCirc)


}

Upvotes: 3

Related Questions