iOS 图表 : Combined data into stacked bar chart?

标签 ios swift charts ios-charts

我对使用 iOS 图表库还很陌生,我能够制作条形图,但我无法理解如何“堆叠”包含相同 x 轴值的一组数据。

这是我的条形图目前的样子:

enter image description here

实现这个的代码:

extension MyViewController: IAxisValueFormatter
{
    func stringForValue(_ value: Double, axis: AxisBase?) -> String
    {
        let record_ARRAY = record_ARRAY.sorted(by: {$0.date < $1.date})

        let date = record_ARRAY[Int(value)].date

        return ReusableClass.typeThreeDateFormat(date: date)
    }
}

var chargeDates_ARRAY = [Date]()
var chargeCosts_ARRAY = [Double]()

override func viewDidLoad()
{
    chargeDates_ARRAY = [2017-08-05 07:00:00 +0000, 2017-08-06 07:00:00 +0000, 2017-08-06 07:00:00 +0000, 2017-08-07 07:00:00 +0000]

    chargeCosts_ARRAY = [8.0, 3.0, 5.6600000000000001, 4.4400000000000004]

    createBarChart(dataPoints: chargeDates_ARRAY, values: chargeCosts_ARRAY)

    barChartView.delegate = self
}

func createBarChart(dataPoints: [Date], values: [Double])
{
    var dataEntries: [BarChartDataEntry] = []

    for index in 0..<dataPoints.count
    {
        let dataEntry = BarChartDataEntry(x: Double(index),
                                                  y: values[index])

        dataEntries.append(dataEntry)
    }

    barChartView.xAxis.valueFormatter = self

    barChartView.xAxis.granularity = 1

    barChartView.xAxis.setLabelCount(dataPoints.count, force: false)

    barChartView.animate(yAxisDuration: 1.0, easingOption: .easeInOutQuad)

    let chartDataSet = BarChartDataSet(values: dataEntries, label: "")
    let chartData = BarChartData(dataSet: chartDataSet)

    barChartView.data = chartData

    barChartView.zoom(scaleX: zoomXMultiplier, scaleY: 0.0, x: 0, y: 0)

    barChartView.barData?.barWidth = barWidthMultiplier
}

我喜欢做的是将包含 2 个相同 x 轴值 08/06/17 的数据合并到一个 stacked 条中,并实现如下所示:

enter image description here

我试着按照问题的答案:Stacked bar chart with charts in Swift

但是我什么也做不了。

有人可以帮忙吗?谢谢!

最佳答案

尝试将您的 chargeCosts_ARRAY = [8.0, 3.0, 5.6600000000000001, 4.4400000000000004] 构建为 chargeCosts_ARRAY = [[8.0], [3.0, 5.6600000000000001], [4.40000000001], [4.40004]00基本上,您正在尝试创建类型为 [[Double]]() 的对象。然后将 BarChartDataEntry(x: Double(index), y: values[index]) 更改为 BarChartDataEntry(x: Double(index), yValues: values[index])。快乐编码:)

关于iOS 图表 : Combined data into stacked bar chart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536061/

相关文章:

ios - NSDateFormat dd/MM/yyyy 到 MM/dd/yyyy iOS

swift : Updated Variable in a different scene

ios - 在 collectionViewCell 和 tableViewCell 中使用相同的 View

ios - api 调用的文本标签中的值未更新

php - 使用 php 和 ajax 在谷歌饼图中处理事件

javascript - highcharts.js 当y值全为0时将线推到图表底部

ios - 主队列上的 dispatch_async block 不在模式运行循环中执行

Javascript/AngularJS 要求消费者下载 iOS/Android 应用程序

javascript - 影响 d3.js 中多个单独图表的交互?

ios - 如何在 Swift 中有条件地为 tvOS 编译