Convert bar chart to a grouped bar chart with danielgindi/ios-charts and Swift

匿名 (未验证) 提交于 2019-12-03 02:06:01

问题:

i have created the simple bar chart with the library at https://github.com/danielgindi/ios-charts still can't figure out how to make this a grouped bar chart. I've added the units sold array to the chart, but don't know how to get the unitBought array to the chart to make it a grouped chart.please help.

@IBOutlet weak var barChartView: BarChartView!  override func viewDidLoad() {     super.viewDidLoad()           months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]     let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 12.8]     let unitsBought = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 12.8]     setChart(months, values: unitsSold) }   //functions func setChart(dataPoints: [String], values: [Double]) {     barChartView.noDataText = "You need to provide data for the chart."      var dataEntries: [BarChartDataEntry] = []      for i in 0..

回答1:

You haven't actually done anything with unitsBought.

For a bar chart you can do two things:

  1. Add another DataSet with your unitsBought
  2. Use the other overload of BarCharDataEntry(values: [Double], xIndex: Int) or BarCharDataEntry(values: [Double], xIndex: Int, label: String) to pass multiple values per entry, which makes it stacked.


回答2:

let months = ["Jan", "Feb", "Mar", "Apr", "May"]     let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0]     let unitsBought = [10.0, 14.0, 60.0, 13.0, 2.0]       override func viewDidLoad() {             super.viewDidLoad()             // Do any additional setup after loading the view, typically from a nib.             barChartView.delegate = self             barChartView.noDataText = "You need to provide data for the chart."             barChartView.chartDescription?.text = "sales vs bought "               //legend             let legend = barChartView.legend             legend.enabled = true             legend.horizontalAlignment = .right             legend.verticalAlignment = .top             legend.orientation = .vertical             legend.drawInside = true             legend.yOffset = 10.0;             legend.xOffset = 10.0;             legend.yEntrySpace = 0.0;               let xaxis = barChartView.xAxis             xaxis.valueFormatter = axisFormatDelegate             xaxis.drawGridLinesEnabled = true             xaxis.labelPosition = .bottom             xaxis.centerAxisLabelsEnabled = true             xaxis.valueFormatter = IndexAxisValueFormatter(values:self.months)             xaxis.granularity = 1               let leftAxisFormatter = NumberFormatter()             leftAxisFormatter.maximumFractionDigits = 1              let yaxis = barChartView.leftAxis             yaxis.spaceTop = 0.35             yaxis.axisMinimum = 0             yaxis.drawGridLinesEnabled = false              barChartView.rightAxis.enabled = false            //axisFormatDelegate = self              setChart()         }   func setChart() {         barChartView.noDataText = "You need to provide data for the chart."         var dataEntries: [BarChartDataEntry] = []         var dataEntries1: [BarChartDataEntry] = []          for i in 0.. interval per "group"           let groupCount = self.months.count         let startYear = 0           chartData.barWidth = barWidth;         barChartView.xAxis.axisMinimum = Double(startYear)         let gg = chartData.groupWidth(groupSpace: groupSpace, barSpace: barSpace)         print("Groupspace: \(gg)")         barChartView.xAxis.axisMaximum = Double(startYear) + gg * Double(groupCount)          chartData.groupBars(fromX: Double(startYear), groupSpace: groupSpace, barSpace: barSpace)         //chartData.groupWidth(groupSpace: groupSpace, barSpace: barSpace)         barChartView.notifyDataSetChanged()          barChartView.data = chartData               //background color         barChartView.backgroundColor = UIColor(red: 189/255, green: 195/255, blue: 199/255, alpha: 1)          //chart animation         barChartView.animate(xAxisDuration: 1.5, yAxisDuration: 1.5, easingOption: .linear)       } 


回答3:

func setChartBarGroupDataSet(dataPoints: [String], values: [Double], values2: [Double],sortIndex:Int) {      var dataEntries: [BarChartDataEntry] = []     var dataEntries2: [BarChartDataEntry] = []       for i in 0..


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!