2017-03-05 74 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