ios - 如何更改 xAxis 标签 iOS 图表 (Swift 2.3)

标签 ios swift graph charts ios-charts

我正在尝试创建一个包含去年数据的折线图。我想让图表 xAxis 上的标签代表去年的月份,这在本教程中似乎很容易完成:https://www.codebeaulieu.com/96/How-to-create-a-Combined-Bar-and-Line-chart-using-ios-charts .但是,教程中的这行代码:

let data: LineChartData = LineChartData(xVals: months, dataSets: dataSets)

其中“months”表示字符串数组,在图表更新到 Swift 2.3 后不可用。 LineChartData 唯一可用的构造函数是这两个:

LineChartData(dataSets: <[IChartDataSet]?>)
LineChartData(dataSet: IChartDataSet?)

所以看起来更改 xVals 的选项在更新后消失了。此选项是否已移至其他位置?还是已从 iOS Charts 中完全删除?

最佳答案

放弃了一段时间后,我终于找到了解决办法。您必须创建一个 IAxisValueFormatter 并实现 stringForValue 函数。例如,我想格式化图表以显示基于当前月份的过去 12 个月。这是我的值格式化程序:

import UIKit
import Charts

class MonthNumberFormatter: NSObject, IAxisValueFormatter {

    private let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    private var startMonthIndex:Int!

    convenience init(startMonthIndex: Int){
        self.init()
        self.startMonthIndex = startMonthIndex
    }

    private func getMonth(index: Int) -> Int{
        return (index % months.count)
    }

    func stringForValue(_ value: Double, axis: AxisBase?) -> String{
        let monthIndex:Int = self.getMonth(index: Int(value) + self.startMonthIndex)
        let month = months[monthIndex]
        return month
    }
}

然后在您的图表类中 --> 获取当前月份:

func getCurrentMonth()->Int? {
    let todayDate = Date()
    let myCalendar = NSCalendar(calendarIdentifier: .gregorian)
    let myComponents = myCalendar?.components(.month, from: todayDate)
    let month = myComponents?.month
    return month
}

现在在图表上设置值

let xAxis = self.chartView.xAxis
let currentMonth = getCurrentMonth()
xAxis.valueFormatter = MonthNumberFormatter(startMonthIndex: currentMonth!)

关于ios - 如何更改 xAxis 标签 iOS 图表 (Swift 2.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666882/

相关文章:

matlab - 如何在 MATLAB 中为 ax+by-c 画一条线?

algorithm - K 尺寸子图

ios - Cordova + Bootstrap : correct way to start a website a little lower

ios - 通过 iOS TestFlight 测试时 React Native RCTFatal + 448 崩溃

ios - 删除 iOS 中谷歌地图聚类中的特定标记

ios - 除非我先发布消息,否则无法接收 PubNub 消息

algorithm - 用最少的简单路径覆盖无向图的所有边

ios - UITableView 决定单个行高

iphone - iCloud:我可以忽略那些禁用 iCloud 的人吗?

ios - 具有自动布局的 UIPageViewController 在 vi​​ewDidAppear 之前不会更新子框架