Основной сюжетный вопрос:Как добавить индикатор данных

StackOverflow https://stackoverflow.com/questions/2325422

Вопрос

я хочу добавить строку индикатора данных, похожую на следующее изображение, в основной график.

Постройте изображение 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) Добавьте диаграмму рассеяния с двумя точками: одну внизу и одну вверху.

Это все хаки, но все они должны работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top