Search code examples
iosswiftios-chartsstacked-chart

iOS Charts to make Stacked BarChart with 2 arrays


Well, I'm trying to make Stacked Bar Charts. (Swift, iOS-Charts from cocoapod.) under those conditions..

  1. I have 1 String Arrays and 2 Double Arrays:

    1) monthArray = {"1","2","3".....,"12"} //for xAxis Label

    2) finalBorrowArray = {0,0,500.0,0,200.0...etc}

    3) finalLendArray = {0,0,500.0,800.0,...etc}

  2. Here's some Swift Code :

    func setChartData(count:Int, range:UINT32) {
    
          var dataEntries: [ChartDataEntry] = []
          var dataEntries2: [ChartDataEntry] = []
    
          for i in 0..<finalBorrowArray.count {
    
              let dataEntry = BarChartDataEntry(x: Double(i), yValues: 
              [finalBorrowArray[i]])
              dataEntries.append(dataEntry)
          }
    
          for i in 0..<finalLendArray.count {
    
              let dataEntry = BarChartDataEntry(x: Double(i), yValues: 
              [finalLendArray[i]])
             dataEntries2.append(dataEntry)
          }
    
          let yVals = (0..<count).map { (i) -> BarChartDataEntry in
    
              @@@@@@@@@@@@@@@PROBLEM@@@@@@@@@HELP@@@@@@@@@@@@@
              return ?
          }
    
          }
    
    let set = BarChartDataSet(values:yVals, label: "")
    set.drawIconsEnabled = false
    set.colors = [ChartColorTemplates.pastel()[0], ChartColorTemplates.pastel()[3]]
    
    set.stackLabels = ["(+)", "(-)"]
    
    let data = BarChartData(dataSet: set)
    data.setValueFont(.systemFont(ofSize: 10, weight: 20))
    data.setValueFormatter(DefaultValueFormatter(formatter: formatter))
    data.setValueTextColor(.black)
    
    barChart.fitBars = true
    barChart.data = data
    

So What I think is I have to get yVal as BarChartDataEntry in let yVals. (Maybe..?)

But I have no idea How to get ovals with 2 yAxis... Any Help or Idea?

Thanks in advance..!


Solution

  • I solved it myself..

    I used another BarChartDataEntry which 2 arrays are combined, not use yVals.

    Here is the code:

    var finalEntries : [BarChartDataEntry] = []
    
        for i in 0..<finalLendArray.count {
    
            let Entry = BarChartDataEntry(x: Double(i), yValues: [finalBorrowArray[i], finalLendArray[i]])
            finalEntries.append(Entry)
        }
    
        let set = BarChartDataSet(values:finalEntries, label: "")