0

我做了一些搜索,但没有发现有人尝试过类似的事情,所以我想我在这里问一下。我要做的基本上是创建一个图表,每隔 5 秒获取一次数据并绘制它。到目前为止,我所做的最好的事情是允许用户平移静态图的静态图。

我目前正试图达到我可以按下一个按钮的地步,它将根据 X 轴的稳定时间间隔和 Y 轴上从 1 到 100 的随机数在图表上创建一个新点。我正在尝试如何做到这一点如下:

@synthesize scatterPlot = _scatterPlot;
@synthesize statusLabel, data, isPlotting;

CGFloat xCoord;

- (void)startPlot:(id)sender {

    if (isPlotting == FALSE) {
        xCoord = 0;
    }

    if (isPlotting == TRUE)
    {
        statusLabel.text = @"Starting Plot";

        xCoord += 5;
        [data addObject:[NSValue valueWithCGPoint:CGPointMake(xCoord, (arc4random() % 100 + 1))]];

        self.scatterPlot = [[TUTSimpleScatterPlot alloc] initWithHostingView:_graphHostingView andData:data];
        [self.scatterPlot initialisePlot];

        [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(startPlot:) userInfo:nil repeats:NO];
    }
}

- (void)endPlot:(id)sender {
    statusLabel.text = @"Plotting Stopped";
    isPlotting = FALSE;
}

这基本上是我尝试完成所描述任务的核心。这个想法是我按下调用startPlot并将isPlotting值设置为 true 的“开始”按钮,然后我将 xCoord 值增加任意 5,持续 5 秒,然后生成并添加我的新点到我的名为data的 NSMutableArray 数组。之后我重新初始化我的散点图并启动一个定时器休眠 5 秒并再次调用startPlot函数。

我遇到的问题是它要么没有更新,要么我得到一个没有点的空白 X 和 Y 轴。无论如何,我缺少一些我希望有人知道并可以帮助我的东西!

谢谢你!-卡罗利

4

1 回答 1

0

您所描述的是实时图,就像示波器一样,对吧?你看过示例应用程序吗?特别是实时情节中的情节画廊项目?应该就是这样,它在示例文件夹中。

查看RealTimePlot类(在项目树中,在 Plots 组下),基本上所做的是设置一个调用该方法的计时器,-(void)newData:(NSTimer *)theTimer向数据数组添加一个新点,重绘并移动CPTPlotRanges。

您使用的是什么版本的 CorePlot?

于 2012-06-30T02:23:52.053 回答