核心情节:无法在条形图中获得传奇标题

时间:2012-03-27 13:30:34

标签: objective-c ios core-plot

我正在尝试根据这样的例子在条形图中添加图例

 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没有被调用,因为评论后结果相同方法也是如此。

This the sceen capture of the output

2 个答案:

答案 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之后;声明,一切都很好。

Animal451

这不是一个好的答案,但它是一个答案。