Я обновил до последней версии Coreplot (1.2) и столкнулся с проблемой.Сброс Coreplot в месте ScatterPLot
Мой график имеет два участка внутри него. График бар и график рассеяния. График рассеяния представляет собой линейное представление подключенных баров. Все работало хорошо в версии 1.1, но когда я переключился на 1.2, график Scatter, похоже, был неуместным. Это от начала немного слева. Вот изображение:
Эти 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;
Когда я удалить тень, сюжет помещается на линии.
Это на iOS или Mac OS X? Какая версия? Что произойдет, если вы измените размер окна или поверните устройство или прокрутите график? –
Это на iPad. И ничто не меняется при повороте/прокрутке/изменении размера. Надеюсь, что есть быстрое исправление, хотя я не могу найти его. –
Я ничего не вижу в коде, который вы опубликовали. Можете ли вы опубликовать установочный код для обоих графиков? Участвуют ли участки в сюжетном пространстве или у вас есть несколько? –