2015-08-24 4 views
0

J'ai fait un graphique à bulles à l'aide d'un nuage de points coreplot en ajustant la taille de chaque symbole dans la méthode de source de donnéesComment faire Légende graphique à bulles de terrain de base

-(CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)idx { 
    Event *thisEvent; 
    CGSize size; 
    CPTPlotSymbol *symbol; 

    symbol = [CPTPlotSymbol ellipsePlotSymbol]; 
    CPTMutableLineStyle *lineStyle = [symbol.lineStyle mutableCopy]; 

    if (idx < self.events.count) { 
     thisEvent = [self.events objectAtIndex:idx]; 
     size.width = [thisEvent scaledValue]; 
     size.height = size.width; 
    } 
} 

Comment puis-je créer une légende indiquant les valeurs pour chacune des tailles de symboles? J'ai regardé CPTLegendEntry dans le class reference, mais je n'ai pas encore réussi à le résoudre. Si quelqu'un peut aider (Eric?), J'apprécierais.

Répondre

0

Vous pouvez utiliser un délégué de légende pour personnaliser le dessin des nuances. Implémentez la méthode de délégué - legend:shouldDrawSwatchAtIndex:forPlot:inRect:inContext: et dessinez votre échantillon personnalisé dans le contexte donné. Renvoyez NO pour indiquer à la légende qu'il n'est pas nécessaire de dessiner l'échantillon par défaut également.

Si vous avez besoin de plus de contrôle, vous pouvez créer le vôtre. Sous-classe CPTBorderedLayer, remplacez -renderAsVectorInContext: pour dessiner et associez le calque personnalisé au graphique en tant qu'annotation.