2013-05-06 3 views
0

Я обновил до последней версии Coreplot (1.2) и столкнулся с проблемой.Сброс Coreplot в месте ScatterPLot

Мой график имеет два участка внутри него. График бар и график рассеяния. График рассеяния представляет собой линейное представление подключенных баров. Все работало хорошо в версии 1.1, но когда я переключился на 1.2, график Scatter, похоже, был неуместным. Это от начала немного слева. Вот изображение:

enter image description here

Эти plotsymbols и весь график рассеяния был прав синхронно с барной стойкой (т.е. символ был в середине бара Freen, а не за его пределами и символы были на линии сетки), как и должно быть. Точки, возвращающиеся с numberForPlot, имеют одинаковые значения.

А вот мой numberForPlot метод только в случае, если:

- (NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx 
{ 
if ([plot.identifier isEqual:kBarPlot]) 
{ 
    if (fieldEnum == CPTBarPlotFieldBarLocation) 
     return [NSNumber numberWithInt:[self.intervalStringArray indexOfObject:[allKeys objectAtIndex:idx]]]; 

    NSArray *activitiesForDate = [activitiesByDate valueForKey:[allKeys objectAtIndex:idx]]; 
    double activityAmount = 0.0; 
    if (activitiesForDate) 
    { 
     //compute value 
    } 

    DebugLog(@"Barplot returning Y= %f forindex = %d", activityAmount, idx); 
    return [NSNumber numberWithDouble:activityAmount]; 
} 
if ([plot.identifier isEqual:kScatterPlot]) 
{ 
    NSString *currentDate = [[self activityDatesAsString] objectAtIndex:idx]; 
    if (fieldEnum == CPTScatterPlotFieldX) 
    { 
     int currentIndex = [self.intervalStringArray indexOfObject:currentDate]; 
     return [NSNumber numberWithInt:currentIndex]; 
    } 


    NSArray *activitiesForDate = [self activitiesForDate:[self.dateFormatter dateFromString:currentDate]]; 
    float netActivity = 0.0; 

    //compute netActvity 
    DebugLog(@"SCATTERPLOT returning %@ for index %d", [NSNumber numberWithFloat:netActivity], idx); 
    return [NSNumber numberWithFloat:netActivity]; 
} 
return nil; 

}

Наконец, выход журнала;

SCATTERPLOT returning -8 for index 0 
SCATTERPLOT returning -4 for index 1 
Barplot returning Y= -8.000000 for index = 0 
Barplot returning Y= -4.000000 for index = 1 

EDIT: В то время как я почти закончил размещение кода здесь с проблемой сохраняющейся даже тогда, когда график рассеяния один в графике. Я нашел проблему, но я не знаю, нормально это или если это ошибка. Проблема заключается в CPTMutableShadow:

CPTScatterPlot *netActivityPlot = [[[CPTScatterPlot alloc] init] autorelease]; 
    netActivityPlot.identifier = kNetActivityPlot; 
    netActivityPlot.title = @"Net Activity"; 

    CPTMutableLineStyle *lineStyle = [[netActivityPlot.dataLineStyle mutableCopy] autorelease]; 
    lineStyle.lineWidth    = 2.0; 
    lineStyle.lineColor    = _cptNetActivityLineColor; 
    netActivityPlot.dataLineStyle = lineStyle; 
    netActivityPlot.dataSource = self; 
    CPTMutableShadow *shadow = [CPTMutableShadow shadow]; 
    shadow.shadowColor = [CPTColor lightGrayColor]; 
    shadow.shadowOffset = CGSizeMake(2.0, -2.0); 
    shadow.shadowBlurRadius = 4.0f; 
    netActivityPlot.shadow = shadow; 
    [activityGraph addPlot:netActivityPlot]; 

    netActivityPlot.plotSpace = (CPTXYPlotSpace *)activityGraph.defaultPlotSpace; 

Когда я удалить тень, сюжет помещается на линии.

+0

Это на iOS или Mac OS X? Какая версия? Что произойдет, если вы измените размер окна или поверните устройство или прокрутите график? –

+0

Это на iPad. И ничто не меняется при повороте/прокрутке/изменении размера. Надеюсь, что есть быстрое исправление, хотя я не могу найти его. –

+0

Я ничего не вижу в коде, который вы опубликовали. Можете ли вы опубликовать установочный код для обоих графиков? Участвуют ли участки в сюжетном пространстве или у вас есть несколько? –

ответ

0

Сообщается, что это ошибка. Размещено как новый выпуск на основном участке issue tracker.

Смежные вопросы