Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Core-plot Question : How to add a data Indicator

i want to add a data indicator line similar to the following image in core-plot.

Plot Image http://img203.imageshack.us/img203/9412/plota.png

Any idea how i can achieve this using core-plot. I have just started to understand core-plot, so any tip will be very useful.

Thanks

Edit :

For better understanding i have created a screencast to show what i mean :

http://www.screencast.com/users/GauravVerma/folders/Jing/media/78fbef04-8785-46d6-9347-4f35d257109c

Added on 26th Feb :

I have solved partial problem by using two dataplots. here is the current implementation :

http://www.screencast.com/users/GauravVerma/folders/Jing/media/02a1e685-8bf8-41a9-aaa6-5ea6445f6a6c

I have used two dataplots, one is the main one & other one plots only one data point which is reloaded when slider value changes.

Here are my Datasource methods (may help somebody):

-(NSUInteger)numberOfRecordsForPlot:(CPPlot *)plot {
    if ([(NSString *)plot.identifier isEqualToString:@"Blue Plot"]){
        return [dataForPlot count];
    }else {
        return 1;
    }

}

-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{
    if ([(NSString *)plot.identifier isEqualToString:@"Green Plot"]) {
        index = floor((double)[slider value]);
        if (index > [dataForPlot count] -1) {
            index = [dataForPlot count] -1;
        }
        NSLog(@"Green plot index : %f",index);
    }
    NSNumber *num = [[dataForPlot objectAtIndex:index] valueForKey:(fieldEnum == CPScatterPlotFieldX ? @"x" : @"y")];
    num = [NSNumber numberWithDouble:[num doubleValue] + 1.0];
    return num;
}

Now only problem remains is to find out a easy way to draw the line. Any Ideas ??

like image 956
Gaurav Verma Avatar asked Feb 24 '10 11:02

Gaurav Verma


1 Answers

There is not really any direct way to do this type of interaction in Core Plot itself yet, though it is planned for future inclusion.

One way to do it would be to place your own UIView over the top of the graph, and use that to get mouse move events.

You could then have a few choices for showing the red line:

1) Add a second y axis, and position it according to the mouse events

2) Add a bar plot with exactly one bar, that extends over the whole vertical space

3) Add a scatter plot that has two points, one at the bottom, and one at the top.

These are all hacks, but they should all work.

like image 182
Drew McCormack Avatar answered Sep 24 '22 16:09

Drew McCormack