如何在iOS中显示分组条形图数据右侧的第二个y轴

时间:2016-08-22 04:32:47

标签: ios swift charts bar-chart ios-charts

我正在开发一个活动跟踪器 iOS 应用程序,我需要在条形图中显示步骤和卡路里的历史记录。我使用了 iOS图表 为了这。我能够通过使用这个来获得分组图表,但我无法显示两个单独的轴条以获得步数和卡路里。以下是我的要求。请建议我如何使用iOS-Charts实现这一点,或者建议我使用 Swift 编写的任何其他图表。

Grouped Bar Chart

我使用iOS Charts库编写代码,如下所示

 func setUpDataForCharts()
{
    var weekDays = [String]()
    for i in 1 ... 7
    {
        let value = String(i)
        weekDays.append(value)
    }
    let steps = [2000, 4000, 3500, 1300, 5000, 4800, 2400]
    let calories = [20.5, 40.3, 34.0, 13.3, 50.0, 80.2, 20.0]
    setChartBarGroupDataSet(weekDays, values: steps, values2: calories)
    //setChart(weekDays, values: steps)
    barChartView.xAxis.labelPosition = ChartXAxis.LabelPosition.Bottom
    barChartView.xAxis.drawGridLinesEnabled = false
}

func setChartBarGroupDataSet(dataPoints: [String], values: [Double], values2: [Double]) {

    var dataEntries: [BarChartDataEntry] = []
    var dataEntries2: [BarChartDataEntry] = []


    for i in 0..<dataPoints.count {

        let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
        dataEntries.append(dataEntry)
    }


    for i in 0..<dataPoints.count {

        let dataEntry = BarChartDataEntry(value: values2[i], xIndex: i)
        dataEntries2.append(dataEntry)
    }


    let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Steps")
    let chartDataSet2 = BarChartDataSet(yVals: dataEntries2, label: "Calories")

    chartDataSet2.colors =  [UIColor(hex: "3F7FD0")]

    chartDataSet.colors =  [UIColor(hex: "F53609")]

    let dataSets: [BarChartDataSet] = [chartDataSet,chartDataSet2]

    let data = BarChartData(xVals: dataPoints, dataSets: dataSets)

    barChartView.data = data
    barChartView.descriptionText = ""

    barChartView.rightAxis.axisMaxValue = chartDataSet2.yMax + 1.0

    barChartView.rightAxis.labelCount = chartDataSet2.valueCount


    barChartView.rightAxis.drawGridLinesEnabled = true
    barChartView.rightAxis.drawAxisLineEnabled = false
    barChartView.rightAxis.drawLabelsEnabled = true

    barChartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .Linear)
}

使用上面的代码输出,

Output

提前致谢!

0 个答案:

没有答案