我正在尝试根据这样的例子在条形图中添加图例
CPTBarPlot* barPlot = [[CPTBarPlot alloc] init];
barPlot.dataSource = self;
barPlot.baseValue = CPTDecimalFromString(@"0");
barPlot.barOffset = CPTDecimalFromFloat(1.0f);
barPlot.barCornerRadius = 2.0f;
barPlot.identifier = @"Bar Plot 2";
[barChart addPlot:barPlot toPlotSpace:plotSpace];
// Add legend
CPTLegend *theLegend = [CPTLegend legendWithGraph:barChart];
theLegend.numberOfColumns = 1;
theLegend.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
theLegend.borderLineStyle = [CPTLineStyle lineStyle];
theLegend.cornerRadius = 5.0;
CPTMutableTextStyle* legendStyle = [[CPTMutableTextStyle alloc] init];
legendStyle.fontSize = 18.0f;
theLegend.textStyle = legendStyle;
barChart.legend = theLegend;
barChart.legendAnchor = CPTRectAnchorRight;
barChart.legendDisplacement = CGPointMake(-50.0, 80.0);
这是在图例中设置标题的方法
//legend title
-(NSString *)legendTitleForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)index
{
if (index == 0) {
return @"Major";
}
if (index == 1) {
return @"Minor" ;
}
if (index == 2) {
return @"Normal"; }
return [NSString stringWithFormat:@"Bar %u", index];
}
但我只能看到标题为“Bar Plot 2”的矩形框中的一行和标题前的一个黑色矩形框。 barPlot.identifier中设置的那个。但是所需的输出是显示三行,Major,minor,normal作为标题..我觉得方法legendTitleForBarPlot
没有被调用,因为评论后结果相同方法也是如此。
答案 0 :(得分:1)
尝试使用
更改值 barChart.legendDisplacement = CGPointMake(-50.0, 80.0);
由于你的x位移太大而且我不知道图表的范围。 所有酒吧都会出现传说。所以记录的数量是你的传奇数字。
我没有随时添加传说,但可以为此提供建议。
答案 1 :(得分:0)
我为另一个相当古老的问题道歉,我很感激帮助TechnocraT可能为时已晚。
但是,我遇到了完全相同的问题,即Legend标题没有正确显示在我的条形图中。最初的Legend样片会出现,我会选择背景颜色等,但实际上并没有说明图形线代表什么。
@Eric Skroch在检查该方法是否在数据源类中实现的评论中完全正确(不足为奇)。或者更确切地说,确保正确设置了剧情的代表。在我的情况下,我一直在关注Ray Wenderlich网站上的典型优秀Core Plot教程,这将Plot,Graph和Axes配置分成不同的方法。当我开始配置我的Legends时,我只是放错了相关的代码,并在将设置图表委托给我的班级之前把它放在上(在我的情况下,自我)。
简而言之,我将图例配置代码放在 graph.delegate = self之后;声明,一切都很好。
这不是一个好的答案,但它是一个答案。