图形图参考点正在改变

时间:2016-07-08 12:34:15

标签: ios swift core-plot

我有一个奇怪的问题。我在图表上有一些数据,当新数据到达时,我将其插入图表中。但问题是新数据绘图是从已绘制的绘图的第一点开始,而不是从绘图的最后一点开始。plot drawing issue控制台打印正确的点,但绘图从已绘制的绘图的第一点开始,而不是从已经绘制的绘图的最后一点开始绘制的情节。我的图表设置代码位于:Code for graph set upCode for Axis animation

代码:

func setGraph() {
    let tts = CPTMutableTextStyle()
    tts.fontSize = 75.0
    tts.color = CPTColor(CGColor: UIColor.blackColor().CGColor)
    tts.fontName = "HelveticaNeue-Bold"
    self.graph.titleTextStyle = tts
    self.graph.title = "Heart Rate vs Time"

    self.graph.applyTheme(CPTTheme(named:kCPTPlainWhiteTheme))
    let plotSpace = graph.defaultPlotSpace as! CPTXYPlotSpace!

    plotSpace.allowsUserInteraction = false

    let xRange = plotSpace.xRange.mutableCopy() as! CPTMutablePlotRange
    xRange.locationDouble = Double(0)
    xRange.lengthDouble = Double(kMaxDataPoints)
    plotSpace.xRange = xRange

    let yRange = plotSpace.yRange.mutableCopy() as! CPTMutablePlotRange
    yRange.locationDouble = Double(0)
    yRange.lengthDouble = Double(210)
    plotSpace.yRange = yRange

    graph.addPlotSpace(plotSpace)

    graph.plotAreaFrame!.paddingTop    = 0
    graph.plotAreaFrame!.paddingRight  = 0
    graph.plotAreaFrame!.paddingBottom = graphOffset
    graph.plotAreaFrame!.paddingLeft   = graphOffset
    graph.plotAreaFrame!.masksToBorder = false

    // Grid line styles
    let majorLineStyle          = CPTMutableLineStyle()
    majorLineStyle.lineWidth    = 0.75
    majorLineStyle.lineColor    = CPTColor.redColor()

    let minorLineStyle          = CPTMutableLineStyle()
    minorLineStyle.lineWidth    = 0.25
    minorLineStyle.lineColor    = CPTColor.blackColor()

    //Axis Line colors
    let axisLineStyle           = CPTMutableLineStyle()
    axisLineStyle.lineWidth     = 2.0
    axisLineStyle.lineColor     = CPTColor.blackColor()

    //Axis Label colors
    let labelTextStyle              = CPTMutableTextStyle()
    labelTextStyle.textAlignment    = CPTTextAlignment.Left
    labelTextStyle.color            = CPTColor.blackColor()

    //Axis title color
    let titleTextStyle              = CPTMutableTextStyle()
    titleTextStyle.textAlignment    = CPTTextAlignment.Left
    titleTextStyle.color            = CPTColor.blackColor()
    titleTextStyle.fontSize         = 15

    let dataSourceLinePlot = CPTScatterPlot()
    let lineStyle               = CPTMutableLineStyle()
    lineStyle.lineWidth         = 3.0
    lineStyle.lineColor         = CPTColor.blueColor()
    dataSourceLinePlot.dataLineStyle = lineStyle
    dataSourceLinePlot.identifier    = kPlotIdentifier
    //        dataSourceLinePlot.dataSource    = self

    let xts = CPTMutableTextStyle()
    xts.color = CPTColor(componentRed: 255.0, green: 255.0, blue: 255.0, alpha: 1.0)

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "HH:mm:ss"
    let timeformatter = CPTTimeFormatter(dateFormatter: dateFormatter)
    timeformatter.referenceDate = NSDate().dateByAddingTimeInterval(startTimeInterval)

    currentdate = timeformatter.referenceDate

    let axisSet = graph.axisSet as! CPTXYAxisSet!

    let xAxis = axisSet.xAxis as CPTXYAxis!
    xAxis.axisTitle = CPTAxisTitle(text: "Elapsed Time", textStyle: xts)
    xAxis.labelFormatter = timeformatter
    xAxis.majorGridLineStyle = majorLineStyle
    xAxis.minorGridLineStyle = minorLineStyle
    xAxis.majorIntervalLength = NSNumber(double: 30.0)

    let yAxis = axisSet.yAxis as CPTXYAxis!
    yAxis.axisTitle = CPTAxisTitle(text: "Heart Rate", textStyle: xts)
    let axisFormatter = NSNumberFormatter()
    axisFormatter.maximumFractionDigits = 0
    axisFormatter.minimumIntegerDigits = 1
    yAxis.labelFormatter = axisFormatter
    yAxis.titleOffset = 35.0
    yAxis.majorIntervalLength = 20
    yAxis.majorGridLineStyle = majorLineStyle
    yAxis.minorGridLineStyle = minorLineStyle
    yAxis.axisConstraints = CPTConstraints(lowerOffset: 0.0)

    graph.addPlot(dataSourceLinePlot)
    self.IBviewGraph.hostedGraph = self.graph
     setGraphData()
}

func setGraphData()
{
 self.plot.dataSource = self
        let actualPlotStyle = self.plot.dataLineStyle!.mutableCopy() as! CPTMutableLineStyle
        actualPlotStyle.lineWidth = 2.0
        actualPlotStyle.lineColor = CPTColor(CGColor: (UIColor.blueColor().CGColor))
        self.plot.dataLineStyle = actualPlotStyle
        self.plot.interpolation = .Curved
        self.graph.addPlot(self.plot)
}

现在,当我收到新数据时:

graphData.removeAtIndex(0)
 plot.deleteDataInIndexRange(NSMakeRange(0, 1))
let location = currentIndex
let oldRange = CPTPlotRange(location: location , length: kMaxDataPoints)
let newRange = CPTPlotRange(location: location + 30, length: kMaxDataPoints)
CPTAnimation.animate(plotSpace, property: "xRange", fromPlotRange: oldRange, toPlotRange: newRange, duration: CGFloat(1.0 / kFrameRate))
graphData.append((newTime,data.1))
plot.insertDataAtIndex(UInt(graphData.count - 1), numberOfRecords: 1)

0 个答案:

没有答案