如何设置BarChartDataSet宽度

时间:2016-05-13 12:53:30

标签: ios swift ios-charts

我有一个包含多个 BarChartDataSet 的水平图表(因为它们具有 BarChartDataEntry 的不同颜色)但是在我将其添加到 BarChartData 之后丑陋 :( 那么问题是我如何配置 BarChartDataSet 的宽度? 我发现了两个属性 barSpace groupSpace ,但无法弄清楚如何使用它们:)

这是代码

private func updateChartData () {
        //days
        let days = ["", "", "", "", "", "", ""]
        var dataSets:[BarChartDataSet] = []

        let valuesArr = [[2.0, 3.0, 4.0, 3.0, 2.0, 0.2, 0.7],
                         [3.0, 5.0, 3.6, 2.0, 1.0, 0.2, 0.7],
                         [1.0, 2.0, 6.0, 4.0, 1.5, 0.2, 0.7],
                         [4.0, 3.2, 4.4, 3.0, 2.0, 0.2, 0.7],
                         [0.0, 3.0, 4.0, 3.1, 2.2, 0.2, 0.7],
                         [0.8, 2.1, 4.3, 3.4, 2.0, 0.2, 0.7],
                         [2.9, 3.3, 4.6, 3.7, 2.8, 0.9, 0.7]]

        for (index, values) in valuesArr.enumerate() {
            let entry = BarChartDataEntry.init(values: values, xIndex: index)
            let set = BarChartDataSet.init(yVals: [entry], label: nil)
//            set.barSpace = 1
            set.drawValuesEnabled = false
            set.colors = [UIColor.clearColor(), UIColor.greenColor(), UIColor.blackColor(), UIColor.redColor()]

            dataSets.append(set)
        }

        let data = BarChartData.init(xVals: days, dataSets: dataSets)
//        data.groupSpace = 4
        self.contentView.data = data

        let rightAxis = self.contentView.rightAxis
        rightAxis.enabled = true
        rightAxis.labelFont = UIFont.systemFontOfSize(10)
        rightAxis.drawAxisLineEnabled = true
        rightAxis.drawGridLinesEnabled = true
        rightAxis.axisMinValue = max(0.0, self.contentView.data!.yMin - 1.0)
        rightAxis.axisMaxValue = min(23.0, self.contentView.data!.yMax + 1.0)
        rightAxis.labelCount = Int(rightAxis.axisMaxValue - rightAxis.axisMinValue)
        rightAxis.axisMinValue = 1.0
        rightAxis.axisMaxValue = 23.0

    }

以及运行后的样子

Charts with multiple BarChartDataSet

3 个答案:

答案 0 :(得分:0)

我相信这可以通过更改barSpace属性来实现。请注意,百分比。如果条形的整个空间是100%,那么0.25的条形空间意味着它的25%是空间,75%是条形。

答案 1 :(得分:0)

我发现iOS图表不支持多个BarChartDataSet之间的间距:(

  

1 dataSet表示一个栏,请先记住。不止一个y   一个dataSet中的值将为您提供堆积条形图。校验   他们出了ChartsDemo。有多个条形图和堆叠条   图表。

     

对于那些间距问题,如果ios-charts尚不支持它,那么   你可能需要覆盖渲染器以获得你想要的东西,但是这个   将变得复杂,并要求你了解酒吧是如何   定位和渲染。

https://github.com/danielgindi/Charts/issues/365

所以我将使用一个数据集。每个BarChartDataEntry的颜色将添加到数组并分配给BarChartDataSet

答案 2 :(得分:0)

您是否尝试过在方法中更改barWidth类中的HorizontalBarChartRenderer变量:

public func drawDataSet(context context: CGContext, dataSet: IBarChartDataSet, index: Int)