iphone core-plot

iphone - ¿Cómo se proporcionan etiquetas para el eje de un gráfico de gráfico de núcleo?



core-plot (2)

Estoy utilizando el marco Core Plot e intento trabajar con las aplicaciones de ejemplo. ¿Hay algún tutorial para usar este framework?

Específicamente, ¿cómo se proporcionan etiquetas para los ejes X e Y en un gráfico?


Desafortunadamente, dado que la API del marco aún no se ha estabilizado, no hay muchos tutoriales y algunos de los que ya existen están desactualizados. Las aplicaciones de ejemplo realmente son las mejores fuentes para ver cómo trabajar con el marco.

Por ejemplo, para proporcionar etiquetas de ejes personalizadas, eche un vistazo al archivo fuente CPTestAppBarChartController.m CPTestApp-iPhone. El gráfico de barras en ese ejemplo tiene etiquetas de eje X personalizadas definidas por el siguiente código:

// Define some custom labels for the data elements x.labelRotation = M_PI/4; x.labelingPolicy = CPAxisLabelingPolicyNone; NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:5], [NSDecimalNumber numberWithInt:10], [NSDecimalNumber numberWithInt:15], nil]; NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", @"Label E", nil]; NSUInteger labelLocation = 0; NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]]; for (NSNumber *tickLocation in customTickLocations) { CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle]; newLabel.tickLocation = [tickLocation decimalValue]; newLabel.offset = x.labelOffset + x.majorTickLength; newLabel.rotation = M_PI/4; [customLabels addObject:newLabel]; [newLabel release]; } x.axisLabels = [NSSet setWithArray:customLabels];

Primero, establece la política de etiquetado de ejes en CPAxisLabelingPolicyNone para que el marco sepa que proporcionará etiquetas personalizadas, luego crea una matriz de etiquetas con sus ubicaciones correspondientes y finalmente asigna esa matriz de etiquetas a la propiedad axisLabels en el eje X .


Para proporcionar etiquetas con formato personalizado, puede asignar un formateador a la propiedad labelFormatter de un eje. Puede usar el NSNumberFormatter configurado según sus preferencias, por ejemplo:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; // ... configure formatter CPTXYAxis *y = axisSet.yAxis; y.labelFormatter = formatter;

O, si necesita un formato más específico, puede NSNumberFormatter subclase NSNumberFormatter y anular el método stringForObjectValue: para hacer el formato exacto que desee.