swift - iOS-Charts - 从最旧到最新显示 X 轴(使用降序排序的值)

标签 swift xcode ios-charts

我正在使用 Charts for iOS 构建温度折线图。

我有一个时间轴,其中包含从现在开始的秒数 time 和相应的温度数组 temp

例子:

timeline.time = [504,633,777,803,1020]
timeline.temp = [87,88,88,86,87]

我希望我的图表在左侧显示从现在开始最旧的秒数,在右侧显示最新的温度,但是当我按降序排列我的 time 数组时,我的图表是空的.有没有办法显示一个图表,左边是x轴上的最小值,右边是最大值?

这是我当前的代码:

    var lineChartEntry = [ChartDataEntry]()

    //loop in env data
    for i in 0..<timeline.temp.count {
        let value = ChartDataEntry(x: Double(timeline.time[i]), y: Double(timeline.temp[i]))
        lineChartEntry.append(value)
    }

    let line1 = LineChartDataSet(values: lineChartEntry, label: "Temperature (°F)")
    line1.colors = [UIColor.irbLightGreenColor()]
    line1.mode = .horizontalBezier
    line1.drawCirclesEnabled = false
    line1.lineWidth = 3

    let data = LineChartData(dataSet: line1)

    data.setDrawValues(false)
    temperatureLineChartView.data = data

如果我尝试像这样反转数组:Array(timeline.time[i].reversed())/Array(timeline.temp[i].reversed()) 我的图表是空的。

最佳答案

如果您需要做的是以相反的顺序显示数据,那么您可以调用范围的 reversed() 方法来更改索引并保留数据。

for i in (0..<timeline.temp.count).reversed() {
    let value = ChartDataEntry(x: Double(timeline.time[i]), y: Double(timeline.temp[i]))
    lineChartEntry.append(value)
}

您在 Array(timeline.time[i].reversed()) 中的尝试实际上是试图反转 time[] 的第 i 个元素,而不是访问 time[] 的第 i 个元素反转时间[]。我什至不明白它是如何编译的。

关于swift - iOS-Charts - 从最旧到最新显示 X 轴(使用降序排序的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872751/

相关文章:

ios - UNUserNotificationCenter需要willPresent代码

ios-charts - iOS 图表 - 始终显示限制线

swift - 如何使用网格线之间的最小值、最大值和固定步长设置 iOS 图表 y 轴?

swift - 为什么隐式解包的选项需要在条件语句中再次解包?

ios - 对于 iOS 10 和 swift,是否可以区分锁定设备和将应用程序发送到后台?

iphone - 使 IBOutlet UIImageView 可从方法内部访问

swift - 为什么 XCode Clean and Build 会修复 EXC_BAD_ACCESS?

ios - 是否可以处理 BarChart 列上的点击事件?

swift - 当我在另一个类中声明一个类时有什么问题吗?

Swift:核心数据 - 解决对象创建的逻辑问题