iOS图表反转X轴方向

标签 ios swift charts ios-charts

我有一个使用 Daniel Gindi iOS-charts 构建的条形图.它表示一段时间内的历史数据。我遇到的问题是数据是从左到右绘制的(新数据 -> 旧数据)。我需要将其绘制为从右到左(旧数据 -> 新数据)。我知道我可以颠倒我将数据输入到 BarChartData 中的顺序,但是我遇到了图表仍然左对齐的问题。它需要右对齐。我发现了一个讨论here谈论反转 x 轴的问题以及如何解决它(目前不是框架的包含功能),但是我无法弄清楚实际需要做什么。以下是我需要的示例:

这是我的图表目前的样子:

enter image description here

这是我需要的样子:

enter image description here

我的问题

有没有办法反转x轴?

有没有办法让图表右对齐?

这是我的一些代码并尝试解决该问题:

class ViewController: UIViewController {

    @IBOutlet weak var barChartView: BarChartView!

    //...

    func plotChart() {

        // Create history data
        //...

        barChartView.data = chartData  // 'chartData' is the BarChartData() containing all of the history information

        // No efect
        barChartView.legend.direction = .RightToLeft

        // Chart breaks
        barChartView.leftAxis.axisMinValue = 30
        barChartView.leftAxis.axisMaxValue = 0

        // Breaks the ability to zoom
        barChartView.setVisibleXRangeMinimum(CGFloat(40))
        barChartView.setVisibleXRangeMaximum(CGFloat(1))

    }

}

最佳答案

这个库不支持直接从右到左对齐。

引用 - https://github.com/danielgindi/Charts/issues/738

你必须在库级别实现一些东西才能让它从右到左对齐。

编辑后的答案

经过一番努力,我找到了解决方案,希望这对您有所帮助。

Download sample code

import UIKit

class ViewController: UIViewController {


  @IBOutlet weak var barChartView: BarChartView!

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

        let months = ["7/23/2016", "7/22/2016", "7/21/2016", "7/20/2016", "7/19/2016", "7/18/2016", "7/17/2016"]
        let unitsSold = [0.0, 0.0, 0.0, 0.0, 20.0, 50.0, 30.0]

        setChart(months, values: unitsSold)

    }


    func setChart(dataPoints: [String], values: [Double]) {

        var dataEntries: [BarChartDataEntry] = []

        for i in 0..<dataPoints.count {
            if !values[i].isZero {
                let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
                dataEntries.append(dataEntry)
            }
        }

        let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "")
        let chartData = BarChartData(xVals: dataPoints, dataSet: chartDataSet)
        barChartView.data = chartData

        barChartView.leftAxis.enabled = false
        barChartView.descriptionText = ""
        barChartView.xAxis.labelPosition = .Bottom

    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

enter image description here

关于iOS图表反转X轴方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474766/

相关文章:

android - Linkedin 如何在不通过浏览器的情况下如此快速地从电子邮件重定向到应用程序?

ios - 寻找仅用于直接上/下左/右方向的操纵杆

swift - 制作水平UIPickerView

swift - 检查是否设置了带有名称的图像(WatchKit)

ios - Firebase 在 Swift 中检索自动 ID 以下的数据

ios - 为什么这个页面加载速度像 iframe 一样慢,但直接访问时正常?

ios - 使用 Avplayer/kit 问题播放本地视频

java - 如何克服 JFreeChart 问题?

jquery - 我怎样才能改变图例 jquery flot 的形状

javascript - 使用 morris.js 显示 "Bar"表示零结果