ios - IOS Swift,条形图中条形值的自定义渲染器
问题描述
我正在使用图表库(https://github.com/danielgindi/Charts,感谢 Daniel)在 Android 和 IOS 应用程序中绘制不同的图表。我需要分组条形图,并且条形值很高。所以当我显示时,这些值是重叠的。我为我的 Android 应用程序使用了自定义渲染器,它将垂直显示值,如屏幕截图所示。现在我也需要 IOS 应用程序。
这是我的 ios 快速代码:
func setBarChart(barchart: BarChartView, chartData: BarData){
let groupSpace = 0.16
let barSpace = 0.03
let barWidth = 0.25
let yearlyData = [YearlyData] (chartData.data!)
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let tempData1 = [ReportData] (yearlyData[0].data!)
let tempData2 = [ReportData] (yearlyData[1].data!)
let tempData3 = [ReportData] (yearlyData[2].data!)
var yearlyData1 = [Double]()
var yearlyData2 = [Double]()
var yearlyData3 = [Double]()
for i in 0..<12 {
yearlyData1.append(Double(tempData1[i].value!)!)
yearlyData2.append(Double(tempData2[i].value!)!)
yearlyData3.append(Double(tempData3[i].value!)!)
}
barchart.noDataText = "no_data_found".localized
barchart.noDataTextColor = textColour
barchart.chartDescription?.text = ""
barchart.drawValueAboveBarEnabled = true
barchart.legend.enabled = true
barchart.xAxis.drawGridLinesEnabled = false
barchart.xAxis.labelTextColor = textColour
barchart.xAxis.labelPosition = .bottom
barchart.xAxis.labelCount = months.count
barchart.xAxis.labelRotationAngle = 0.0
barchart.xAxis.valueFormatter = IndexAxisValueFormatter(values:months)
barchart.xAxis.granularityEnabled = true
barchart.xAxis.granularity = 1
barchart.xAxis.axisMinimum = 0
barchart.xAxis.centerAxisLabelsEnabled = true
barchart.xAxis.axisMaximum = 12
barchart.xAxis.labelPosition = .top
barchart.rightAxis.enabled = false
barchart.leftAxis.labelTextColor = textColour
barchart.leftAxis.drawGridLinesEnabled = false
barchart.leftAxis.axisMinimum = 0
barchart.fitBars = true
var dataEntries1: [BarChartDataEntry] = []
var dataEntries2: [BarChartDataEntry] = []
var dataEntries3: [BarChartDataEntry] = []
var counter = 0.0
for i in 0..<months.count {
let dataEntry1 = BarChartDataEntry(x: counter, y: yearlyData1[i])
dataEntries1.append(dataEntry1)
let dataEntry2 = BarChartDataEntry(x: counter, y: yearlyData2[i])
dataEntries2.append(dataEntry2)
let dataEntry3 = BarChartDataEntry(x: counter, y: yearlyData3[i])
dataEntries3.append(dataEntry3)
counter += 1.0
}
let chartDataSet1 = BarChartDataSet(values: dataEntries1, label: "2017")
chartDataSet1.colors = [UIColor.red]
chartDataSet1.valueColors = [textColour]
let chartDataSet2 = BarChartDataSet(values: dataEntries2, label: "2018")
chartDataSet2.colors = [UIColor.orange]
chartDataSet2.valueColors = [textColour]
let chartDataSet3 = BarChartDataSet(values: dataEntries3, label: "2019")
chartDataSet3.colors = [UIColor.green]
chartDataSet3.valueColors = [textColour]
let chartData = BarChartData()
chartData.addDataSet(chartDataSet1)
chartData.addDataSet(chartDataSet2)
chartData.addDataSet(chartDataSet3)
chartData.barWidth = barWidth
barchart.data = chartData
barchart.setVisibleXRangeMaximum(4.0)
barchart.groupBars(fromX: 0, groupSpace: groupSpace, barSpace: barSpace)
barchart.animate(yAxisDuration: 0.5, easingOption: .easeInExpo)
}
解决方案
推荐阅读
- python - 如何在python中创建执行管道
- dictionary - 使用 LUA 中的变量访问字典键值
- excel - 如何使用VBA获取跳过Excel中第一个区域的区域中的所有行
- php - 生成自增函数
- sql - 在 MS Access 中运行 Visual Basic SQL 查询的语法错误
- accessibility - “显示全部”按钮的 ARIA-controls 属性
- plot - ezcontour 获得的曲线数
- mysql - 如何在mysql中添加特定数据?
- javascript - 当上面的元素消失并且向上移动时,保持 div 元素上的视口
- node.js - 吉普错误!堆栈错误:`C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` 失败,退出代码:1