【发布时间】:2020-08-13 21:51:27
【问题描述】:
我正在使用 iOS 图表 (V3.3) 绘制水平条形图,用于体育应用的球员表现统计。我希望在每种情况下都将条形值显示在条形旁边。只要玩家同时拥有负数和正数表现点,我就可以做到这一点,但如果玩家只有正数表现点,则不会显示任何值。
我在自己的类中有 BarChartView,并且正在使用此代码
import Charts
class PlayerPerformanceBarChart: HorizontalBarChartView, IValueFormatter {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setChart(pf: [PerformanceStat]) {
noDataTextColor = Style.labelText
noDataText = gf.getLiteral("noPerformanceData")
isUserInteractionEnabled = false
legend.enabled = false
leftAxis.enabled = false
rightAxis.enabled = false
chartDescription?.text = nil
drawValueAboveBarEnabled = true
// Data
var dataEntries: [BarChartDataEntry] = []
var labels: [String] = []
for i in 0..<pf.count {
dataEntries.append(BarChartDataEntry(x: Double(i), y: Double(pf[i].playerPoints)))
labels.append(pf[i].playerAction)
}
let chartDataSet = BarChartDataSet(entries: dataEntries, label: nil)
chartDataSet.colors = ChartColorTemplates.joyful()
chartDataSet.valueFormatter = self
let chartData = BarChartData(dataSets: [chartDataSet])
chartData.setDrawValues(true)
// X Axis - which for a Horizontal Bar Chart is actually the vertical (Y) axis - I know, crazy but true!!
let xaxis = self.xAxis
xaxis.drawGridLinesEnabled = false
xaxis.labelPosition = .bottom
xaxis.labelCount = pf.count
xaxis.axisMinimum = -1
xaxis.resetCustomAxisMin()
xaxis.centerAxisLabelsEnabled = false
xaxis.granularity = 1
xaxis.granularityEnabled = true
xaxis.labelTextColor = Style.chartText
xaxis.valueFormatter = IndexAxisValueFormatter(values: labels)
clipValuesToContentEnabled = true
//Chart Format and Display
data = chartData
}
func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
return Int(value).description
}
}
函数 setChart 由包含视图(即 UIScrollView)调用
它只是一个单一的数据集,所以没有分组。当没有要显示的负值时,我无法找出为什么这些值不会显示。查看图表代码,这与栏的位置超出视口处理程序的范围有关,但我不明白为什么会这样。
任何帮助将不胜感激
【问题讨论】:
-
leftAxis.axisMinimum = 0
标签: swift charts ios-charts