我正在使用 Daniel (https://github.com/danielgindi/Charts) 的图表来创建条形图 (MacOS)。为简单起见,Master 分支中的演示条形图示例不会响应用户单击条形图(与我的实现结果相同,因此我也使用演示进行了测试。如果我能让 Demo 工作,它应该也修复我的。)
func testDemo()
{
// Do any additional setup after loading the view.
let xArray = Array(1..<10)
let ys1 = xArray.map { x in return sin(Double(x) / 2.0 / 3.141 * 1.5) }
let ys2 = xArray.map { x in return cos(Double(x) / 2.0 / 3.141) }
let yse1 = ys1.enumerated().map { x, y in return BarChartDataEntry(x: Double(x), y: y) }
let yse2 = ys2.enumerated().map { x, y in return BarChartDataEntry(x: Double(x), y: y) }
let data = BarChartData()
let ds1 = BarChartDataSet(entries: yse1, label: "Hello")
ds1.colors = [NSUIColor.red]
data.append(ds1)
let ds2 = BarChartDataSet(entries: yse2, label: "World")
ds2.colors = [NSUIColor.blue]
data.append(ds2)
let barWidth = 0.4
let barSpace = 0.05
let groupSpace = 0.1
data.barWidth = barWidth
self.barChartView.xAxis.axisMinimum = Double(xArray[0])
self.barChartView.xAxis.axisMaximum = Double(xArray[0]) + data.groupWidth(groupSpace: groupSpace, barSpace: barSpace) * Double(xArray.count)
// (0.4 + 0.05) * 2 (data set count) + 0.1 = 1
data.groupBars(fromX: Double(xArray[0]), groupSpace: groupSpace, barSpace: barSpace)
self.barChartView.data = data
self.barChartView.gridBackgroundColor = NSUIColor.white
self.barChartView.chartDescription.text = "Barchart Demo"
}
我在 viewDidLoad 和以下实现中设置了委托
extension StatisticsBarChart: ChartViewDelegate {
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight)
{
print(entry)
print(highlight)
}
func chartValueNothingSelected(_ chartView: ChartViewBase)
{
print("nothing selected")
}}
实际上选择了 10 次中的 1 次。但大多数情况下,会打印“未选择任何内容”。所以图表正在工作并且正在调用委托方法。但是点击一个栏几乎是不可能的。有时,点击一个栏会突出显示另一个栏。
要使选择能够正常工作,我缺少什么?我应该能够选择每个条形,并且每次都会调用正确的委托函数。
答案 0 :(得分:0)
这似乎是 master 分支版本 4.0.0+ 中的实际错误
恢复到 3.6.0 版解决了问题