在danielgindi / Charts ios中显示x轴值

问题描述 投票:1回答:2

我需要在ios中创建一个折线图,所以我搜索并发现danielgindi / Charts是最好的选择之一。

我开始使用它并绘制图表,但我需要在UI进行一些更改。我试图给danielgindi LineChart我想要的外观,但我没有得到它。

我希望我为x轴提供的值应该反映原样,但它没有反映出来?

我想画的图表:-Line chart needed

我创建的图表:-Line chart made using ios charts

事情需要改变: -

  1. 左轴值 - >我试图通过lineChart.rightAxis.enabled = false删除它。它删除了y轴线(与x轴平行的线)。我想要y轴线。
  2. 虚线轴线而不是完整。
  3. X轴应正确显示值,Jan,jan,feb显示而不是jan,feb,march,这也不正确。
  4. 方形黑匣子需要拆除。

这是代码: -

    override func viewDidLoad() {
        super.viewDidLoad()

        self.lineChart.delegate = self
        self.lineChart.chartDescription?.textColor = UIColor.white

        let months = ["Jan" , "Feb", "Mar"]
        let dollars1 = [1453.0,2352,5431]
        setChart(months, values: dollars1)
    }

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

        var dataEntries: [ChartDataEntry] = []

        for i in 0 ..< dataPoints.count {
            dataEntries.append(ChartDataEntry(x: Double(i), y: values[i]))
        }

        let lineChartDataSet = LineChartDataSet(values: dataEntries, label: nil)
        lineChartDataSet.axisDependency = .left
        lineChartDataSet.setColor(UIColor.black)
        lineChartDataSet.setCircleColor(UIColor.black) // our circle will be dark red
        lineChartDataSet.lineWidth = 1.0
        lineChartDataSet.circleRadius = 3.0 // the radius of the node circle
        lineChartDataSet.fillAlpha = 1
        lineChartDataSet.fillColor = UIColor.black
        lineChartDataSet.highlightColor = UIColor.white
        lineChartDataSet.drawCircleHoleEnabled = true

        var dataSets = [LineChartDataSet]()
        dataSets.append(lineChartDataSet)


        let lineChartData = LineChartData(dataSets: dataSets)
        lineChart.data = lineChartData
        lineChart.rightAxis.enabled = false
        lineChart.xAxis.drawGridLinesEnabled = false
        lineChart.xAxis.labelPosition = .bottom
        lineChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: dataPoints)
    }
ios iphone swift charts ios-charts
2个回答
1
投票

在快速3:答案1:

chartView.leftAxis.enabled = false

答案4:

chartView.legend.enabled = false

1
投票

每个日期都需要存储为字符串并添加到xvalues数组中。这就是我解决这个问题的方法:

 override func viewDidLoad() {
    super.viewDidLoad()

    var xvalues: [String] = [String]()
    xvalues.append("3 Sept")
    xvalues.append("16 Sept")
    xvalues.append("15 Oct")
    xvalues.append("15 Oct")
    xvalues.append("15 Oct")

    let xAxis = lineChart.xAxis
    xAxis.labelPosition = .bothSided
    xAxis.axisMinimum = 0.0
    xAxis.granularity = 1.0

    lineChart.leftAxis.enabled = false
    lineChart.rightAxis.enabled = false
    lineChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: xvalues)

    let data = generateLineData()
    lineChart.data = data


}

func generateLineData() -> LineChartData {
    let data: LineChartData = LineChartData()
    var entries: [ChartDataEntry] = []
    var dataArr: [Int] = []
    dataArr.append(10)
    dataArr.append(5)
    dataArr.append(8)
    dataArr.append(12)
    dataArr.append(10)

    for index in 0..<5 {
        entries.append(ChartDataEntry(x: Double(index),  y: Double(dataArr[index]) ) )
    }

    let set: LineChartDataSet = LineChartDataSet(values: entries, label: "My label")
    set.setCircleColor(UIColor.blue)
    set.lineWidth = 1
    set.circleRadius = 5
    set.drawCircleHoleEnabled = false
    set.valueTextColor = UIColor.blue
    set.valueFont = UIFont(name: "Verdana", size: 12.0)!
    set.drawFilledEnabled = true
    set.mode = Charts.LineChartDataSet.Mode.linear
    set.axisDependency = Charts.YAxis.AxisDependency.left

    data.addDataSet(set)

    return data
}
© www.soinside.com 2019 - 2024. All rights reserved.