gpt4 book ai didi

ios-charts - 当集合使用不同范围的 X 坐标时,iOS 图表不会绘制多个数据集

转载 作者:行者123 更新时间:2023-12-04 07:58:57 24 4
gpt4 key购买 nike

从多个数据集创建折线图时,折线图仅显示其中一个数据集,并且在缩放或平移图表时会因 fatal error 而崩溃:无法形成带有 upperBound 如果我从一个数据集创建折线图,它会按预期工作。
仅当两个数据集具有完全不同的 X 值范围时才会出现此问题。
下面的代码应该绘制一个 x 范围从 0 到 19(即 2 个数据集)的图表。但它只绘制第二个数据集。如果您平移或缩放图表,它会崩溃。
如果我编辑代码,替换 for x in (10..<20)for x in (0..<10) ,两个数据集都正确绘制,图表不会崩溃。
总结一下:当添加两个具有不同 X 坐标范围条目的数据集时,图表绘制不正确并且会崩溃。
是否需要调用 iOS_charts API 来防止这种情况发生?如何绘制两个没有重叠 X 坐标的数据集?
使用 this demo code 运行代码时,我已经能够产生相同的崩溃如果我修改它以创建多个具有非重叠 x 坐标的数据集。

class ElevationChartViewController: UIViewController {

@IBOutlet var chartView: LineChartView!

override func viewDidLoad() {
super.viewDidLoad()

chartView.backgroundColor = .white
chartView.legend.enabled = false
chartView.maxVisibleCount = 20000
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

let dataSets = createChartDataSets()
chartView.data = LineChartData(dataSets: dataSets)
}
}

func createChartDataSets() -> [LineChartDataSet] {
var dataSets = [LineChartDataSet]()
var entriesOne = [ChartDataEntry]()
var entriesTwo = [ChartDataEntry]()
var y = 0.0
for x in (0..<10) {
entriesOne.append( ChartDataEntry(x: Double(x), y: y))
y = y + 10
if y > 60 {y = 0.0}
}
dataSets.append(LineChartDataSet(entriesOne))

for x in (10..<20) {
entriesTwo.append( ChartDataEntry(x: Double(x), y: y))
y = y + 10
if y > 50 {y = 0.0}
}
dataSets.append(LineChartDataSet(entriesTwo))

return dataSets
}
swift 版本:5.4
Xcode 12.4
观察在真正的 iPhone 12 sw 14.4 版上运行
图表 v4.0.1

最佳答案

我一直面临类似的问题,到目前为止,该解决方案对我有用。不确定由此可能产生的潜在副作用。我还没有测试过平移或缩放。
子类 LineChartDataSet并覆盖 entryIndex(x xValue:closestToY yValue:rounding)复制并粘贴 super 实现,但删除 guard函数顶部的语句

    var closest = partitioningIndex { $0.x >= xValue }
guard closest < endIndex else { return -1 }
并替换为
    var closest = partitioningIndex { $0.x >= xValue }
if closest >= endIndex {
closest = endIndex - 1
}

关于ios-charts - 当集合使用不同范围的 X 坐标时,iOS 图表不会绘制多个数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66562983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com