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 ar开发者_如何学Goe 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 ??
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.
精彩评论