Ярлыки оси основного графика не видны вне области графика - PullRequest
8 голосов
/ 22 ноября 2011

У меня проблемы с метками осей.Кажется, мои собственные метки не видны за пределами области графика.Если посмотреть на Обзор проекта для основного графика, метки осей должны находиться за пределами области графика.Любые идеи о том, как я могу сделать их видимыми за пределами области графика?

Код / изображение ниже показывает, как метки отображаются только внутри области графика.Если я изменю смещение метки на положительное число, метки не будут отображаться вообще.Я использую Core Plot 0.9 с iOS 5.

Заранее спасибо!

CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
graph = [[theme newGraph] retain];;

CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
hostingView.hostedGraph = graph;

graph.paddingLeft = 40.0;
graph.paddingTop = 40.0;
graph.paddingRight = 40.0;
graph.paddingBottom = 40.0;
graph.masksToBorder = NO;

// ... setup axis
axisSet.yAxis.majorIntervalLength = CPTDecimalFromInt(0);
axisSet.yAxis.minorTicksPerInterval = 0;
axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyNone;

// if this number is negative, the labels show, 
// if it is positive, that is outside the plot area, the labels are hidden.
axisSet.yAxis.labelOffset = -20; 

// ... setup labels
NSMutableArray *labels = [NSMutableArray array];
for (int i = 0; i < reportData.rowCount; ++i) {

    CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:[NSString stringWithFormat:@"Test Row %i", i] textStyle:labelStyle];

    label.tickLocation = CPTDecimalFromInt(i);
    label.offset = axisSet.yAxis.labelOffset;
    label.alignment = CPTAlignmentLeft;
    [labels addObject:label];
    [label release];
}
axisSet.yAxis.axisLabels = [NSSet setWithArray:labels];

Graph

Ответы [ 2 ]

21 голосов
/ 22 ноября 2011

Установите некоторые отступы в рамке области графика в дополнение или вместо самого графика.

graph.plotAreaFrame.paddingTop    = 20.0;
graph.plotAreaFrame.paddingBottom = 50.0;
graph.plotAreaFrame.paddingLeft   = 50.0;
graph.plotAreaFrame.paddingRight  = 50.0;

Этот код взят из демонстрации оси в примере приложения Plot Gallery.

7 голосов
/ 13 декабря 2012

У меня была точно такая же проблема, и я безуспешно пытался найти любое решение, которое смог найти в Интернете.

Наконец-то я заработал, отключив маскирование границ, например:

graph.plotAreaFrame.masksToBorder = NO;
...