Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BarChartView display half in first bar when change from group bar to bar only #3757

Closed
arizale opened this issue Nov 23, 2018 · 1 comment
Closed

Comments

@arizale
Copy link

arizale commented Nov 23, 2018

  • this is my setting for bar chart :
    func setBarChartData(chartData : BarChartData, key:[String]){
    // Y - Axis Setup
    let yaxis = barChartView.leftAxis
    yaxis.spaceTop = 0.35
    yaxis.axisMinimum = 0
    yaxis.drawGridLinesEnabled = false

      // X - Axis Setup
      let xAxis = barChartView.xAxis
      let formatter = CustomLabelsXAxisValueFormatter()//custom value formatter
      formatter.labels = key
      xAxis.valueFormatter = formatter
      
      xAxis.drawGridLinesEnabled = false
      xAxis.labelPosition = .bottom
      xAxis.centerAxisLabelsEnabled = chartData.dataSetCount > 1
      xAxis.granularityEnabled = true
      xAxis.enabled = true
      
      barChartView.chartDescription?.enabled = false
      
      if chartData.dataSetCount > 1{
          let groupSpace = 0.1*Double(chartData.dataSets.count)
          let barSpace = 0.03
          let barWidth = 0.8/Double(chartData.dataSets.count)
          chartData.barWidth = barWidth
          barChartView.xAxis.axisMinimum = 0.0
          barChartView.xAxis.axisMaximum = 0.0 + chartData.groupWidth(groupSpace: groupSpace, barSpace: barSpace) * Double(key.count)
    
          chartData.groupBars(fromX: 0.0, groupSpace: groupSpace, barSpace: barSpace)
      }
      
      barChartView.xAxis.granularity = chartData.dataSetCount == 1 ? 1 : barChartView.xAxis.axisMaximum / Double(key.count)
      
      barChartView.data = chartData
      barChartView.rightAxis.enabled = false
      barChartView.legend.enabled = false
      barChartView.leftAxis.enabled = false
      
      barChartView.notifyDataSetChanged()
      barChartView.setVisibleXRangeMaximum(4)
    

    }

  • and this is method that calling setBarChartData:
    func getBarData(data : NSMutableDictionary) -> BarChartData{
    let key = data.value(forKey: "key") as! [String]
    let current = data.value(forKey: "current") as! NSMutableDictionary
    let prev = data.value(forKey: "previous") as! NSMutableDictionary
    let prevTwo = data.value(forKey: "previous_two") as! NSMutableDictionary
    let prevThree = data.value(forKey: "previous_three") as! NSMutableDictionary

      let currentRevenue = current.value(forKey: "revenue") as! [Int]
      let prevRevenue = prev.value(forKey: "revenue") as! [Int]
      let prevTwoRevenue = prevTwo.value(forKey: "revenue") as! [Int]
      let prevThreeRevenue = prevThree.value(forKey: "revenue") as! [Int]
      
      var currentEntry = [BarChartDataEntry]()
      var prevEntry = [BarChartDataEntry]()
      var prevTwoEntry = [BarChartDataEntry]()
      var prevThreeEntry = [BarChartDataEntry]()
      
      for i in 0..<key.count{
          let current = BarChartDataEntry(x:Double(i), y:Double(currentRevenue[i]))
          let prev = BarChartDataEntry(x:Double(i), y:Double(prevRevenue[i]))
          let prevTwo = BarChartDataEntry(x:Double(i), y:Double(prevTwoRevenue[i]))
          let prevThree = BarChartDataEntry(x:Double(i), y:Double(prevThreeRevenue[i]))
          
          currentEntry.append(current)
          prevEntry.append(prev)
          prevTwoEntry.append(prevTwo)
          prevThreeEntry.append( prevThree)
      }
      
      let dataSet1 = BarChartDataSet(values: prevThreeEntry, label: "2015")
      dataSet1.setColor(NSUIColor.red)
      dataSet1.drawValuesEnabled = false
      
      let dataSet2 = BarChartDataSet(values: prevTwoEntry, label: "2016")
      dataSet2.setColor(NSUIColor.green)
      dataSet2.drawValuesEnabled = false
      
      let dataSet3 = BarChartDataSet(values: prevEntry, label: "2017")
      dataSet3.setColor(NSUIColor.blue)
      dataSet3.drawValuesEnabled = false
      
      let dataSet4 = BarChartDataSet(values: currentEntry, label: "2018")
      dataSet4.setColor(NSUIColor.orange)
      dataSet4.drawValuesEnabled = false
      
      var dataSets : [BarChartDataSet] = []
      if isShowCurrent{
          dataSets.append(dataSet4)
      }
      if isShowPrev{
          dataSets.append(dataSet3)
      }
      if isShowPrev2{
          dataSets.append(dataSet2)
      }
      if isShowPrev3{
          dataSets.append(dataSet1)
      }
      
      return dataSets.count == 1 ? BarChartData(dataSet: dataSets.first) : BarChartData(dataSets: dataSets)
    

// return BarChartData(dataSet: dataSets.first)
}

@arizale
Copy link
Author

arizale commented Nov 23, 2018

Hi,
I just fixed my code with :

    barChartView.xAxis.resetCustomAxisMin()
    barChartView.xAxis.resetCustomAxisMax()

So it will reset axisMin and axisMax
Sorry for open Issue without read this library carefully

@arizale arizale closed this as completed Nov 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant