Line chart in fast 3

I am trying to create a line chart with this code. I outlined most of the code with which I spent hours trying different things. In the class:

PendingViewController: UIViewController, ChartViewDelegate

Output:

@IBOutlet weak var lineChartView: LineChartView!

ViewDidLoad:
    let months = ["Jan" , "Feb", "Mar", "Apr", "May", "June", "July", "August", "Sept", "Oct", "Nov", "Dec"]
    let dollars1 = [1453.0,2352,5431,1442,5451,6486,1173,5678,9234,1345,9411,2212]
    self.lineChartView.delegate = self
    // 2
    self.lineChartView.descriptionText = "Tap node for details"
    // 3
    self.lineChartView.chartDescription?.textColor = UIColor.white
    self.lineChartView.gridBackgroundColor = UIColor.darkGray
    // 4
    self.lineChartView.noDataText = "No data provided"
    // 5
    setChartData(months: months)

Func

func setChartData(months : [String]) {

    // 1 - creating an array of data entries
    var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
    for i in 0 ..< months.count {
        yVals1.append(ChartDataEntry(x: dollars1[i], y: Double(i)))
    }

    // 2 - create a data set with our array
    let set1: LineChartDataSet = LineChartDataSet(values: yVals1, label: "First Set")
    set1.axisDependency = .left // Line will correlate with left axis values
    set1.setColor(UIColor.red.withAlphaComponent(0.5)) // our line opacity is 50%
    set1.setCircleColor(UIColor.red) // our circle will be dark red
    set1.lineWidth = 2.0
    set1.circleRadius = 6.0 // the radius of the node circle
    set1.fillAlpha = 65 / 255.0
    set1.fillColor = UIColor.red
    set1.highlightColor = UIColor.white
    set1.drawCircleHoleEnabled = true

    //3 - create an array to store our LineChartDataSets
    var dataSets : [LineChartDataSet] = [LineChartDataSet]()
    dataSets.append(set1)

    //4 - pass our months in for our x-axis label value along with our dataSets
    let data: LineChartData = LineChartData(xVals: months, dataSets: dataSets)
    data.setValueTextColor(UIColor.white)

    //5 - finally set our data
    self.lineChartView.data = data


}

Im getting this error:

Cannot invoke initializer for typel 'LineChartData' with an argument list of type '(xVals: [String], dataSets: [LineChartDataSet])'

Thank,

Denis

+4
source share
2 answers

Hint on how you can detect overloads and I use it all the time. In the “Search Navigator” in xCode, you can search for “class LineChartData” - then you can examine the code in your module where the class “LineChartData” is defined and see what arguments are in its init methods. Anyway, the answer, in my opinion, is based on changing the line where you say:

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

THIS

 let data: LineChartData = LineChartData(dataSets: dataSets)

. , - .

0

: (Swift 3.0 Chart 3.0)

fileprivate func setChart(_ lineChartView: LineChartView, dataPoints: [Double], values: [Double]) {    
  var dataEntries: [ChartDataEntry] = []

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

  let lineChartDataSet = LineChartDataSet(values: dataEntries, label: "Altitude")
  lineChartDataSet.setColor(UIColor.blue)
  // lineChartDataSet.drawCubicEnabled = true
  lineChartDataSet.mode = .cubicBezier
  lineChartDataSet.drawCirclesEnabled = false
  lineChartDataSet.lineWidth = 1.0
  lineChartDataSet.circleRadius = 5.0
  lineChartDataSet.highlightColor = UIColor.red
  lineChartDataSet.drawHorizontalHighlightIndicatorEnabled = true

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

  let lineChartData = LineChartData(dataSets: dataSets)

  lineChartView.data = lineChartData
}
+3

Source: https://habr.com/ru/post/1671508/


All Articles