2017-03-05 80 views
4

我試圖用這段代碼創建折線圖。我已經制定了大部分代碼,我已經花費數小時嘗試不同的東西。 在類:swift中的折線圖3

PendingViewController: UIViewController, ChartViewDelegate 

出口:

@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's 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 


} 

進出口收到此錯誤:

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

謝謝你,

丹尼斯

+0

有人能幫助我嗎? – Denis

+0

你可以添加庫的鏈接。 –

+0

pod'圖表'?你是這個意思嗎? – Denis

回答

0

一個提示,你如何能夠找出過載和我所有的時間使用。在xCode的「查找導航器」中,您可以搜索「class LineChartData」 - 然後您可以查看您的pod中定義「LineChartData」類的代碼,並查看其init方法中的參數。無論如何,我相信答案,在此基礎上會改變,你說行:

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

這個

let data: LineChartData = LineChartData(dataSets: dataSets) 

這可用過載相匹配。如果你太遲了,以上可能會幫助其他人。

+0

你能幫我解決這個問題嗎? http://stackoverflow.com/questions/42958478/line-graph-model-swift-3 – Denis

+0

我會看看工作。 –

3

工作代碼片段:(雨燕3.0和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 
} 
+0

謝謝你還有條形圖的片段。 – user3804063