ios - 从右向左移动 core plot 图

标签 ios core-plot

我想在 x 轴上从右向左动态移动核心图。

例如,在核心 PLot Gallery 示例中,图形从左向右移动。为此,我正在使用代码:

NSTimer *dataTimer = [NSTimer timerWithTimeInterval:1.0
                                             target:self
                                           selector:@selector(newData:)
                                           userInfo:nil
                                            repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:dataTimer forMode:NSDefaultRunLoopMode];

-(void)newData:(NSTimer *)theTimer
{
CPTPlot *thePlot   = [[self getCorePLotGraph] plotWithIdentifier:@"Device1"];

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[self getCorePLotGraph].defaultPlotSpace;
 NSUInteger location       = (currentIndex >= kMaxDataPoints ? currentIndex - kMaxDataPoints + 2 : 0);

CPTPlotRange *newRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger(location)
                                                      length:CPTDecimalFromUnsignedInteger(kMaxDataPoints-2)];

**CPTMutablePlotRange *xRange = [[self getCoreplotSpace].xRange mutableCopy];
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(-2.0)];
[self getCoreplotSpace].xRange = xRange;**



[CPTAnimation animate:plotSpace
             property:@"xRange"
        fromPlotRange:plotSpace.xRange
          toPlotRange:newRange
             duration:CPTFloat(1.0 / kFrameRate)];

currentIndex++;


[temperatureValuesArray addObject:[NSNumber numberWithDouble:(1.0 - kAlpha) * [[temperatureValuesArray lastObject] doubleValue] + kAlpha * rand() / (double)RAND_MAX]];
[thePlot insertDataAtIndex:temperatureValuesArray.count - 1 numberOfRecords:1];
 }

在上面的代码中,粗体代码用于从右向左移动我现在尝试的内容。

但它并没有从右向左移动。你能帮我看看怎么做吗?

谢谢

最佳答案

您似乎从 "Real Time Plot" demo 中复制了代码包含在 Core Plot 中(复制如下)。这按照您的描述工作:

-(void)newData:(NSTimer *)theTimer
{
    CPTGraph *theGraph = (self.graphs)[0];
    CPTPlot *thePlot   = [theGraph plotWithIdentifier:kPlotIdentifier];

    if ( thePlot ) {
        if ( plotData.count >= kMaxDataPoints ) {
            [plotData removeObjectAtIndex:0];
            [thePlot deleteDataInIndexRange:NSMakeRange(0, 1)];
        }

        CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)theGraph.defaultPlotSpace;
        NSUInteger location       = (currentIndex >= kMaxDataPoints ? currentIndex - kMaxDataPoints + 2 : 0);

        CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger( (location > 0) ? (location - 1) : 0 )
                                                              length:CPTDecimalFromUnsignedInteger(kMaxDataPoints - 2)];
        CPTPlotRange *newRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger(location)
                                                              length:CPTDecimalFromUnsignedInteger(kMaxDataPoints - 2)];

        [CPTAnimation animate:plotSpace
                     property:@"xRange"
                fromPlotRange:oldRange
                  toPlotRange:newRange
                     duration:CPTFloat(1.0 / kFrameRate)];

        currentIndex++;
        [plotData addObject:@( (1.0 - kAlpha) * [[plotData lastObject] doubleValue] + kAlpha * rand() / (double)RAND_MAX )];
        [thePlot insertDataAtIndex:plotData.count - 1 numberOfRecords:1];
    }
}

您根本不需要在此方法中更新 xRange — 动画会处理这些。

关于ios - 从右向左移动 core plot 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24932166/

相关文章:

iphone - 核心图 iphone 中 Pie Slice 中的标签

ios - UITextView 打字时无法控制地弹起

ios - 可以移动Core Plot饼图标签吗?

ios - 架构 x86_64 的重复符号

objective-c - CorePlot 图上的点

ios - UISwitch:之前做了什么:附加选择器,还是改变状态?

ios - Firebase,获得具有特定值(value)的 child 的直接 parent

iphone - 如何使用 XCode 4.3.2 为 iOS 构建动态库

android - 像 GCM 这样的推送通知在内部是如何工作的?

xcode - 缺少用于将 core-plot 文档安装到 xCode 中的 com.CorePlot.Framework.docset 包