我有一个包含多个 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
}
以及运行后的样子
答案 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)