Основной сюжетный вопрос:Как добавить индикатор данных
-
22-09-2019 - |
Вопрос
я хочу добавить строку индикатора данных, похожую на следующее изображение, в основной график.
Постройте изображение http://img203.imageshack.us/img203/9412/plota.png
Любая идея, как я могу добиться этого, используя основной сюжет.Я только начал понимать основной сюжет, поэтому любой совет будет очень полезен.
Спасибо
Редактировать :
Для лучшего понимания я создал скринкаст, чтобы показать, что я имею в виду:
http://www.screencast.com/users/GauravVerma/folders/Jing/media/78fbef04-8785-46d6-9347-4f35d257109c
Добавлено 26 февраля:
Я решил частичную проблему, используя два графика данных.вот текущая реализация:
http://www.screencast.com/users/GauravVerma/folders/Jing/media/02a1e685-8bf8-41a9-aaa6-5ea6445f6a6c
Я использовал два графика данных: один является основным, а другой отображает только одну точку данных, которая перезагружается при изменении значения ползунка.
Вот мои методы источника данных (может кому-нибудь помочь):
-(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;
}
Теперь остается только одна проблема: найти простой способ провести линию.Есть идеи ??
Решение
На самом деле в самом Core Plot пока нет прямого способа реализовать этот тип взаимодействия, хотя его планируется включить в будущем.
Один из способов сделать это — разместить собственный UIView поверх графика и использовать его для получения событий перемещения мыши.
Затем у вас может быть несколько вариантов отображения красной линии:
1) Добавьте вторую ось Y и расположите ее в соответствии с событиями мыши.
2) Добавьте гистограмму ровно с одной полосой, которая простирается на все вертикальное пространство.
3) Добавьте диаграмму рассеяния с двумя точками: одну внизу и одну вверху.
Это все хаки, но все они должны работать.