Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как привязать точки в CorePlot? не получается привязать точки к графику 
:(
    Опции темы
JohnyBlackbird
Дата 8.1.2014, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



Всем привет! Бьюсь над этой проблемой уже третьи сутки. Я не понимаю, как привязать точки из _graphData к plot'у. При запуске проги у меня отображается пустая координатная сетка. Искал примеры кода, даже нашёл один проект XCode(ссылку на него сейчас найти уже не могу), но у меня не получается прикрутить этот код к своему проекту, поэтому пришлось написать свой ###код.
Во всех примерах есть эта строчка.
Код

plot.dataSource=self;



Но я не понимаю, зачем здесь присваивается self? Тут нужно как-то данные из _graphData загрузить в plot.
Вот мой код.
Код

CGRect  viewRect = CGRectMake(175, 20 , 280, 320 );
            CustomView *myView = [[CustomView alloc]initWithFrame:viewRect];
            myView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
            [self.view addSubview:myView];
            [myView drawRect:viewRect];
           _graph = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width*0.95, self.view.frame.size.height*0.9)];
           _graph.backgroundColor = [CPTColor clearColor].cgColor;
           _graph.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
           CPTTheme * theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
           [_graph applyTheme:theme];
           _hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(175, self.view.frame.size.height*0.08 , self.view.frame.size.width*0.8, self.view.frame.size.height*0.9)];
           _hostingView.hostedGraph = _graph;
           _hostingView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
           [self.view addSubview:_hostingView];
           _graph.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
           CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)_graph.defaultPlotSpace;
           plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([intbeg doubleValue]) length:CPTDecimalFromFloat([intend doubleValue])];
           plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([intbeg doubleValue]-5*[intend doubleValue]) length:CPTDecimalFromFloat(10*[intend doubleValue])];
           self.graph.plotAreaFrame.paddingTop = 20.0f;
           self.graph.plotAreaFrame.paddingRight = 30.0f;
           self.graph.plotAreaFrame.paddingBottom = 30.0f;
           self.graph.plotAreaFrame.paddingLeft = 30.0f;
           CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
           CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
           lineStyle.lineColor = [CPTColor blackColor];
           lineStyle.lineWidth = 2.0f;
           
           // Create a text style that we will use for the axis labels.
           CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle];
           textStyle.fontName = @"Helvetica";
           textStyle.fontSize = 14;
           textStyle.color = [CPTColor blackColor];
 
           axisSet.xAxis.title = @"Data X";
           axisSet.xAxis.titleTextStyle = textStyle;
           axisSet.xAxis.titleOffset = 4.0f;
           axisSet.xAxis.axisLineStyle = lineStyle;
           axisSet.xAxis.majorTickLineStyle = lineStyle;
           axisSet.xAxis.minorTickLineStyle = lineStyle;
           axisSet.xAxis.labelTextStyle = textStyle;
            axisSet.xAxis.minorTicksPerInterval = 1;
           axisSet.yAxis.title = @"Data Y";
           axisSet.yAxis.titleTextStyle = textStyle;
           axisSet.yAxis.axisLineStyle = lineStyle;
           axisSet.yAxis.majorTickLineStyle = lineStyle;
           axisSet.yAxis.minorTickLineStyle = lineStyle;
           axisSet.yAxis.labelTextStyle = textStyle;
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0, 1)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.4, 0.5)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.5, 0.3)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.8, 0.6)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1, 1)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1.3, 1.6)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1.8, 1.8)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2, 1.9)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2.3, 2.7)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2.8, 4)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(3, 5)]];
           CPTScatterPlot *plot = [[CPTScatterPlot alloc] init];
           plot.dataSource=self;
           plot.identifier = @"mainplot";
           plot.dataLineStyle = lineStyle;
           [_graph addPlot:plot];


Это сообщение отредактировал(а) JohnyBlackbird - 8.1.2014, 14:48
PM MAIL   Вверх
Bitter
Дата 8.1.2014, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



я не совсем понимаю что тут происходит, но судя по всему вы присваиваете self в качестве источника данных. Вероятно есть какой-то протокол для получения данных из dataSource. Перейдите в описание свойства dataSource и посмотрите какому протоколу оно должно отвечать, потом перейдите в протокол и посмотрите какие методы self должен реализовать
PM MAIL ICQ Skype   Вверх
JohnyBlackbird
Дата 8.1.2014, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



Тут реализован протокол CPTScatterPlotDelegate. Вот подробное его описание:
http://core-plot.googlecode.com/hg-history...a_source-p.html
Код из предыдущего сообщения я писал в классе ViewController, который объявлен у меня как
Код

@interface ViewController : NSViewController <CPTScatterPlotDelegate, CPTPlotSpaceDelegate, CPTPlotDataSource>

Но почему не работает мой код, я так и не догнал.
PM MAIL   Вверх
Bitter
Дата 8.1.2014, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Ну а методы протокола реализовали? Они вызываются? Вы в них данные возвращаете?
PM MAIL ICQ Skype   Вверх
JohnyBlackbird
Дата 9.1.2014, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 26.12.2009

Репутация: нет
Всего: нет



 Я не знаю точно, какие там методы нужно реализовывать. В том то весь и вопрос.
PM MAIL   Вверх
Bitter
Дата 9.1.2014, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



там же всего два метода, ну читайте документацию, разбирайтесь. Так как вы их не реализовали - вот по этому ничего и не работает. Смысл dataSource в том чтобы хранить и отдавать по требованию данные
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.