Почему я не могу контролировать тики по оси даты в Core-Plot? - PullRequest
4 голосов
/ 03 сентября 2010

У меня есть график рассеяния Core-Plot, который, кажется, работает отлично. Ось X показывает дату / время, ось Y - значение от 0 до 500. Я настроил ось х следующим образом:

    plotSpace.xRange = [CPPlotRange plotRangeWithLocation:
                        CPDecimalFromFloat(maxTime - 2*60*60*24) 
                         length:CPDecimalFromFloat(2.5*60*60*24)];
    plotSpace.globalXRange = [CPPlotRange plotRangeWithLocation:
                        CPDecimalFromFloat(minTime - 1.5*60*60*24) 
                         length:CPDecimalFromFloat(maxTime - minTime + 2*60*60*24)];

    x.majorIntervalLength = CPDecimalFromFloat(12*60*60);
    x.minorTicksPerInterval = 0;
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDateFormat:@"M/d H:mm a"];
    CPTimeFormatter *timeFormatter = [[[CPTimeFormatter alloc]
                initWithDateFormatter:dateFormatter] autorelease];
    timeFormatter.referenceDate = [NSDate
                dateWithTimeIntervalSinceReferenceDate:0];
    x.labelFormatter = timeFormatter;

Мои точки по оси X построены следующим образом:

-(NSNumber *)numberForPlot:(CPPlot *)plot 
                     field:(NSUInteger)fieldEnum 
               recordIndex:(NSUInteger)index 
{
    if(fieldEnum == CPScatterPlotFieldX) { 
        return [NSNumber numberWithDouble:[[(Entry *)
            [datapoints objectAtIndex:index] datetime]
            timeIntervalSinceReferenceDate]]; 
    }

Насколько я могу судить, все идет точно. НО, по какой-то причине, тики появляются в 5 утра и 5 вечера, а не в полдень и полночь, как я бы предпочел.

Я пробовал все - изменение местоположения и длины xRange и globalXRange, изменение набора данных и т. Д. Но каждый раз, когда ярлыки появляются в 5 и 5 часов утра. Вы можете помочь? Спасибо!

1 Ответ

3 голосов
/ 04 сентября 2010

5 часов звучит как проблема часового пояса.Попробуйте установить свойство timeZone в dateFormatter на [NSDateFormatter timeZoneForSecondsFromGMT:0].

...