Je suis complètement nouveau dans Core Plot et j'ai un graphique à barres qui fonctionne, mais le visuel est inutile pour moi à moins que je ne sache quel objet est représenté dans chaque barre. J'ai vu qu'il y a une méthode appelée 'fieldIdentifiers' mais je ne sais pas comment l'implémenter, et je ne peux pas trouver de documentation (si c'est la bonne méthode). Pouvez-vous me diriger dans la bonne direction? Merci!Comment ajouter des étiquettes aux barres de points CPBarPlot?
3
A
Répondre
9
Pour définir manuellement les étiquettes d'un axe dans un diagramme de tracés principaux, vous devez définir la propriété labelling de cet axe sur CPAxisLabelingPolicyNone
et fournir les étiquettes vous-même. Par exemple, le code suivant établira des étiquettes personnalisées dans un graphique à barres (tirées de code que je vais ajouter à l'exemple d'application iPhone à un moment donné):
CPXYAxisSet *axisSet = (CPXYAxisSet *)barChart.axisSet;
CPXYAxis *x = axisSet.xAxis;
x.labelRotation = M_PI/4;
x.labelingPolicy = CPAxisLabelingPolicyNone;
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:5], [NSDecimalNumber numberWithInt:10], [NSDecimalNumber numberWithInt:15], [NSDecimalNumber numberWithInt:20], nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", @"Label E", nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [[NSMutableArray alloc] initWithCapacity:[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];
Ceci définit cinq étiquettes personnalisées (étiquette A, B, C, D et E) aux emplacements 1, 5, 10, 15 et 20 sur l'axe X.
Vous êtes mon héros. J'ai été en mesure de prendre ce que vous avez écrit et de le fusionner dans mon code pour un délicieux tableau d'étiquettes. Avez-vous joué avec la nouvelle fonctionnalité pour définir les étiquettes à l'extrémité des barres? C'est dans CPTestApp pour Mac, mais c'est opaque pour moi. – lelander
Drew vient d'ajouter qu'il y a quelques jours, et je n'arrive pas à comprendre comment cela fonctionne. Cela a quelque chose à voir avec la méthode -barLabelForBarPlot: recordIndex: delegate, mais je ne peux pas répliquer l'effet dans mon code. –
Salut si vous définissez manuellement des étiquettes pour l'axe, lorsque les valeurs des barres de statut sont modifiées, la position des axislabels est perturbée comment résoudre ce problème? – ravoorinandan