如何在图表(IOS)上使用X轴显示每个月份

3

我正在尝试使用图表,但是无法在X轴上显示每个月份,只能通过一个月显示。请看图片

stringForValue中,我尝试打印值,结果显示:0 2 4 6 8 10 0 1 2 3 4 5 6 7 8 9 10 11 0 2 4 6 8 10,但为什么会有三次传递,其中第一次和最后一次是通过一个月?我该怎么做才能显示每个月份?

import UIKit

import Charts

class BarChartViewController: UIViewController {

    var months = [String]()
    var unitsSold = [Double]()

    weak var axisFormatDelegate: IAxisValueFormatter?

    @IBOutlet weak var barChartView: BarChartView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        axisFormatDelegate = self

        months = ["Jan",
                  "Feb",
                  "Mar",
                  "Apr",
                  "May",
                  "Jun",
                  "Jul",
                  "Aug",
                  "Sep",
                  "Oct",
                  "Nov",
                  "Dec"
        ]

        unitsSold = [1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0]

        setChart(dataPoints: months, values: unitsSold)


    }

    func setChart(dataPoints: [String], values: [Double]) {
        barChartView.noDataText = "NO DATA"

        var dataEntries = [BarChartDataEntry]()

        for i in 0..<dataPoints.count {
            let dataEntry = BarChartDataEntry(x: Double(i), y: values[i], data: dataPoints)

            dataEntries.append(dataEntry)
        }

        let chartDataSet = BarChartDataSet(entries: dataEntries, label: "Units Sold")
        let chartData = BarChartData(dataSet: chartDataSet)

        barChartView.data = chartData

        barChartView.xAxis.valueFormatter = axisFormatDelegate
    }


}

extension BarChartViewController: IAxisValueFormatter {

    func stringForValue(_ value: Double, axis: AxisBase?) -> String {

        print(Int(value))

        return months[Int(value)]
    }  
}
1个回答

1
您至少有两种选项来解决您的问题。
只需为xAxis设置属性labelCount,例如:barChartView.xAxis.labelCount = 12
或者使用方法setLabelCount(:),例如:barChartView.xAxis.setLabelCount(12, force: true)
请注意,使用属性labelCount不能保证标签的数量恰好等于您指定的数量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接