gpt4 book ai didi

ios - Coreplot折线图线不可见

转载 作者:行者123 更新时间:2023-11-28 06:11:56 24 4
gpt4 key购买 nike

我试图用核心图制作折线图,但我遇到了问题。虽然 number(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,您为每条记录提供的数据是相同的数据点,即(X: 2, Y: 3)。鉴于您为所有记录赋予相同的点,散点图的最终数据集将是:

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

你不能用这个数据集得到一条线,它只是一个点。

尝试为不同的记录提供不同的数据,您会看到一条线。你可以看下面的例子来理解

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
}
}

关于ios - Coreplot折线图线不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46306033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com