Ich habe ein Diagramm mit 2 Balken-Plots (Beispiel: A und B).Multiple Bar Plot-Legende
Für jede Stunde habe ich 2 bar Grundstücke.
Wenn ich die Legende lege, bekomme ich swatch und Text für jede Stunde und bar Plot.
Beispiel: In meinem Diagramm haben 4 Stunden, dann wird meine Legende wie dieser sein
AAAA
BBBB
und ich möchte nur
AB
Da jede Stunde auf Die Balken bedeuten dasselbe. Wie kann ich das tun ??
ich alles versucht haben, dies zu machen, aber keinen Erfolg bis jetzt ....
Bellow ist mein
// CPTLegend *theLegend = [CPTLegend legendWithGraph:barChart];
CPTLegend *theLegend = [CPTLegend legendWithPlots:[NSArray arrayWithObjects:[barChart plotAtIndex:0],[barChart plotAtIndex:1], nil]];
theLegend.numberOfRows = 1;
theLegend.numberOfColumns = 2;//[horas count] +1/2;
//theLegend.fill = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:0.15]];
//theLegend.borderLineStyle = barLineStyle;
theLegend.cornerRadius = 10.0;
theLegend.swatchSize = CGSizeMake(15, 15);
//whiteTextStyle.fontSize = 16.0;
//theLegend.textStyle = whiteTextStyle;
theLegend.rowMargin = 10.0;
theLegend.paddingLeft = 12.0;
theLegend.paddingTop = 12.0;
theLegend.paddingRight = 12.0;
theLegend.paddingBottom = 12.0;
//theLegend.equalColumns = YES;
//theLegend.equalRows = YES;
theLegend.delegate = self;
barChart.legend = theLegend;
- (NSString *) legendTitleForBarPlot: (CPTBarPlot *) BarPlot Record :(NSUInteger) index {
if ([barPlot.identifier isEqual:@"Embarque"]) {
if (index == 0)
{
return @"Embarque";
}else {
return @"";
}
}else {
if (index == 0)
{
return @"Desembarque";
}else {
return @"";
}
}
} - (BOOL) Legende: (CPTLegend *) Legende shouldDrawSwatchAtIndex: (NSUInteger) Index forPlot: (CPTPlot *) Grundstück inRect: (CGRect) rect InContext : (CGContextRef) Kontext {
if (index == 0) {
return YES;
}else{
return NO;
}
}
Dank Eric, kommentierte ich -legendTitleForBarPlot: Record: Methode und -legend: shouldDrawSwatchAtIndex: forPlot: inRect: InContext: Methoden. Ich legte die Titeleigenschaft meiner beiden Handlung. Aber es passiert immer noch das gleiche wie zuvor. Ich habe versucht, De NumberOfRows auf 1 und NumberOfCollouns auf 2 zu ändern, aber die Legende überlappen. Bitte werfen Sie einen Blick auf das Druckbild unten http://3.bp.blogspot.com/-QQa9LKUaJHY/T32WTHFcfOI/AAAAAAAAAGI/xpruAySamrQ/s1600/Captura+de+Tela+2012-04-05+às+ 09.50.31+ (2) .png –
Haben Sie die Methode '-barFillForBarPlot: recordIndex: 'in Ihrer Datenquelle implementiert? Dadurch wird auch das Legendenverhalten ausgelöst. Von Ihrem Screenshot aus sieht es nicht so aus, als würden Sie es brauchen. –
Ja, das habe ich getan. Ich habe meinen vollständigen Code auf eine andere Antwort geschrieben. Vielen Dank im Voraus –