[英]Swift: Bar chart content not centerd horizontally
I use Daniel Gindi's library char https://github.com/danielgindi/Charts 我使用Daniel Gindi的库char https://github.com/danielgindi/Charts
I have a problem I can not center the content chart horizontally 我有一个问题,我无法将内容图表水平居中
My code: 我的代码:
private func setup(xValue: [String]) {
noDataText = "No data"
xAxis.drawGridLinesEnabled = false
xAxis.labelPosition = .bottom
xAxis.valueFormatter = IndexAxisValueFormatter(values: xValue)
xAxis.granularity = 1
xAxis.granularityEnabled = true
xAxis.labelCount = xValue.count
xAxis.axisMinimum = 0.0
xAxis.axisMaximum = Double(xValue.count)
leftAxis.spaceTop = 0.35
leftAxis.axisMinimum = 0
leftAxis.drawGridLinesEnabled = false
rightAxis.enabled = false
}
And to create the chart: 并创建图表:
private func setChart(xValue: xAxisValue, values: [SBChartEntry]) {
let dataSets: [BarChartDataSet] = values.map {
let set = BarChartDataSet(entries: $0.value.enumerated().map { index, element in
BarChartDataEntry(x: Double(index), y: element)
}, label: $0.name)
set.colors = [$0.color]
return set
}
let chartData = BarChartData(dataSets: dataSets)
let groupSpace: Double = (values.count > 1) ? 0.7 / (Double(values.count) * 2.2) : 0.6
let barSpace = (values.count > 1) ? 0.05 : 0
let barWidth: Double = (values.count > 1) ? 0.75 / Double(values.count) : 0.4
chartData.barWidth = barWidth
if values.count > 1 {
xAxis.centerAxisLabelsEnabled = true
chartData.groupBars(fromX: Double(0), groupSpace: groupSpace, barSpace: barSpace)
} else {
// For one bar
}
notifyDataSetChanged()
data = chartData
//chart animation
animate(xAxisDuration: 1, yAxisDuration: 1, easingOption: .linear)
}
I can not configure when the chart contains only one array (so only one bar) 我无法配置图表仅包含一个数组(因此只有一个条形)的时间
Thanks 谢谢
Solution: 解:
private func setChart(xValue: xAxisValue, values: [SBChartEntry]) {
let dataSets: [BarChartDataSet] = values.map {
let set = BarChartDataSet(entries: $0.value.enumerated().map { index, element in
BarChartDataEntry(x: Double(index), y: element)
}, label: $0.name)
set.colors = [$0.color]
return set
}
let chartData = BarChartData(dataSets: dataSets)
let groupSpace: Double = (values.count > 1) ? 0.7 / (Double(values.count) * 2.2) : 0.9
let barSpace = (values.count > 1) ? 0.05 : 0.9
let barWidth: Double = (values.count > 1) ? 0.75 / Double(values.count) : 0.5
chartData.barWidth = barWidth
if values.count > 1 {
xAxis.axisMinimum = 0.0
xAxis.centerAxisLabelsEnabled = true
} else {
xAxis.axisMinimum = -1 // I Added this
}
chartData.groupBars(fromX: Double(0), groupSpace: groupSpace, barSpace: barSpace)
notifyDataSetChanged()
data = chartData
//chart animation
animate(xAxisDuration: 1, yAxisDuration: 1, easingOption: .linear)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.