Coreplot折线图行不可见

我试图做一个与核心阴谋的线图,但我有一个问题。 尽pipenumber(for:...)函数(最后一行)起作用并且数据被检索,模拟器中没有行。 我一直试图做这个60个小时,我不知道这里有什么问题。 没有更多的细节。

这是我的代码:

 import UIKit import CorePlot class dottedLine: UIViewController { @IBOutlet var hostView: CPTGraphHostingView! var plot: CPTScatterPlot! override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() initPlot() } let xValues: [NSNumber] = [1,2,3,4] let yValues: [NSNumber] = [1,5,4,3] func initPlot() { configureHostView() configureGraph() configureChart() configureAxes() } func configureHostView() { hostView.allowPinchScaling = false } func configureGraph() { // 1 - Create the graph let graph = CPTXYGraph(frame: hostView.bounds) graph.plotAreaFrame?.masksToBorder = false hostView.hostedGraph = graph // 2 - Configure the graph //graph.apply(CPTTheme(named: CPTThemeName.plainWhiteTheme)) //graph.fill = CPTFill(color: CPTColor.clear()) graph.paddingBottom = 30.0 graph.paddingLeft = 30.0 graph.paddingTop = 0.0 graph.paddingRight = 0.0 // 3 - Set up styles let titleStyle = CPTMutableTextStyle() titleStyle.color = CPTColor.black() titleStyle.fontName = "HelveticaNeue-Bold" titleStyle.fontSize = 16.0 titleStyle.textAlignment = .center graph.titleTextStyle = titleStyle let title = "Just title" graph.title = title graph.titlePlotAreaFrameAnchor = .top graph.titleDisplacement = CGPoint(x: 0.0, y: -16.0) // 4 - Set up plot space let xMin = 0.0 let xMax = 5.0 let yMin = 0.0 let yMax = 15.0 guard let plotSpace = graph.defaultPlotSpace as? CPTXYPlotSpace else { return } plotSpace.xRange = CPTPlotRange(locationDecimal: CPTDecimalFromDouble(xMin), lengthDecimal: CPTDecimalFromDouble(xMax - xMin)) plotSpace.yRange = CPTPlotRange(locationDecimal: CPTDecimalFromDouble(yMin), lengthDecimal: CPTDecimalFromDouble(yMax - yMin)) } func configureChart() { // 1 - Set up the plot plot = CPTScatterPlot() // 2 - Set up style let plotLineStile = CPTMutableLineStyle() plotLineStile.lineWidth = 1 plotLineStile.lineColor = CPTColor.black() plot.dataLineStyle = plotLineStile // 3- Add plots to graph guard let graph = hostView.hostedGraph else { return } plot.dataSource = self plot.delegate = self graph.add(plot, to: graph.defaultPlotSpace) } func configureAxes() { } } extension dottedLine: CPTScatterPlotDataSource, CPTScatterPlotDelegate { func numberOfRecords(for plot: CPTPlot) -> UInt { // number of points return UInt(xValues.count) } func scatterPlot(_ plot: CPTScatterPlot, plotSymbolWasSelectedAtRecord idx: UInt, with event: UIEvent) { } func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any? { switch CPTScatterPlotField(rawValue: Int(field))! { case .X: return 2 as NSNumber case .Y: return 3 as NSNumber } } } 

我检查了你的代码。

 func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any? { switch CPTScatterPlotField(rawValue: Int(field))! { case .X: return 2 as NSNumber case .Y: return 3 as NSNumber } } 

根据代码的上述CPTScatterPlotDataSource ,您为每条logging提供的数据是相同的数据点(X: 2, Y: 3) 。 考虑到您对所有logging给予相同的观点,散点图的最终数据集将为:

 [ (X: 2, Y: 3), (X: 2, Y: 3), (X: 2, Y: 3), (X: 2, Y: 3) ] 

你不能与这个数据集合,这只是一个点。

尝试给不同的logging不同的数据,你会看到一条线。 你可以看下面的例子来理解

 func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any? { switch CPTScatterPlotField(rawValue: Int(field))! { case .X: let xVal = self.xValues[Int(record)] return xVal case .Y: let yVal = self.yValues[Int(record)] return yVal } }