2011-11-22 9 views
8

Tengo algunos problemas con las etiquetas del eje. Parece que mis etiquetas personalizadas no son visibles fuera del área de trazado. En cuanto a Design Overview para la trama central, las etiquetas de los ejes deben estar fuera del área de trazado. ¿Alguna idea sobre cómo puedo hacerlos visibles fuera del área de la trama?Etiquetas del eje de ploteo central no visibles fuera del área de trazado

El código/imagen siguiente muestra cómo las etiquetas solo se muestran dentro del área de trazado. Si cambio el desplazamiento de la etiqueta a un número positivo, las etiquetas no se muestran en absoluto. Estoy usando Core Plot 0.9 con iOS 5.

¡Gracias de antemano!

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

Respuesta

21

Establecer algo de relleno en el bastidor de área de trazado además de o en lugar de la propia gráfico.

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

Este código es de la demostración del eje en la aplicación de ejemplo Plot Gallery.

+0

Gracias! No vi esa opción. –

+5

coreplot es una cosa sencilla de usar/sarc –

7

Estaba teniendo exactamente el mismo problema y probé todas las soluciones que pude encontrar en línea sin éxito.

finalmente conseguí que funcione apagando el enmascaramiento de la frontera, así:

graph.plotAreaFrame.masksToBorder = NO; 
+0

Esto hace que las etiquetas se representen fuera de los límites de la vista de gráfico. Podría ser una solución viable si ha dejado espacio alrededor del componente de vista, pero vale la pena tenerlo en cuenta. –

Cuestiones relacionadas