2

I am using Charts (Git Repo of Daniel Gindi's). Here is my code for single y axis single line chart: When I try to add a second line to the y axis it throws the error 'Cannot convert value of type 'LineChartDataSet' to expected argument type 'String''

import UIKit
import Charts

class PulseController: UIViewController, ChartViewDelegate {

    @IBOutlet var lineChartView: LineChartView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
        let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0]

        setChart(months, values: unitsSold)
    }

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

        var dataEntries: [ChartDataEntry] = []

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

        let lineChartDataSet = LineChartDataSet(yVals: dataEntries, label: "Pulse")
        let lineChartData = LineChartData(xVals: dataPoints, dataSet: lineChartDataSet)
        lineChartView.data = lineChartData

        lineChartView.animate(xAxisDuration: 2.0)
        lineChartView.animate(yAxisDuration: 2.5)

        lineChartDataSet.setCircleColor(UIColor.init(red: 14/255, green: 165/255, blue: 150/255, alpha: 1))

        lineChartDataSet.setColor(UIColor.init(red: 14/255, green: 165/255, blue: 150/255, alpha: 1))
    }
}
DevB2F
  • 4,674
  • 4
  • 36
  • 60
Rajesh M
  • 79
  • 1
  • 13

2 Answers2

0
    @IBOutlet var lineChartView: LineChartView!


    override func viewDidLoad() {
        super.viewDidLoad()

        let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
        let unitsSold1 = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0]
        let unitsSold2 = [200.0, 400.0, 600.0, 300.0, 120.0, 160.0]

        setChart(months, values1: unitsSold1,values2:unitsSold2)

    }

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

        var dataEntries1: [ChartDataEntry] = []
        var dataEntries2: [ChartDataEntry] = []

        for i in 0..<dataPoints.count 
        {
            let dataEntry1 = ChartDataEntry(value: values1[i], xIndex: i)
            dataEntries1.append(dataEntry1)
            let dataEntry2 = ChartDataEntry(value: values2[i], xIndex: i)
            dataEntries2.append(dataEntry2)

        }



        let lineChartDataSet1 = LineChartDataSet(yVals: dataEntries1, label: "Pulse1")
        let lineChartDataSet2 = LineChartDataSet(yVals: dataEntries2, label: "Pulse2")

        var lineChartDataSets :[String]
        lineChartDataSets.append(lineChartDataSet1)
        lineChartDataSets.append(lineChartDataSet2)

        let lineChartData = LineChartData(xVals: dataPoints, dataSet: lineChartDataSets)
        lineChartView.data = lineChartData


        lineChartView.animate(xAxisDuration: 2.0)
        lineChartView.animate(yAxisDuration: 2.5)

        lineChartDataSets.setCircleColor(UIColor.init(red: 14/255, green: 165/255, blue: 150/255, alpha: 1))

        lineChartDataSets.setColor(UIColor.init(red: 14/255, green: 165/255, blue: 150/255, alpha: 1))


    }
ashmi123
  • 710
  • 1
  • 6
  • 21
  • thanks!. But I already tried with this kind of code but it throws error in 'lineChartDataSets.append(lineChartDataSet1)'- "Cannot convert value of type 'LineChartDataSet' to expected value type 'String' " – Rajesh M Aug 05 '16 at 11:36
  • Have u add this line in code to notify data set. lineChartView.data notifyDataChanged() lineChartView notifyDataSetChanged() – ashmi123 Aug 05 '16 at 11:48
  • You can also check below this URL hope u get ur ans. https://github.com/danielgindi/Charts/issues/199 – ashmi123 Aug 05 '16 at 11:50
  • Thanks @ashmi123, your github link...helped me a lot – Rajesh M Aug 06 '16 at 07:39
0

just add the following lines :

lineChartView.rightAxis.enabled = false
lineChartView.xAxis.drawGridLinesEnabled = true
Westside
  • 675
  • 1
  • 7
  • 16
Aymen BRomdhane
  • 143
  • 1
  • 14