Основной сюжет: невозможно получить заголовки легенд в виде диаграммы - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь добавить легенду в мою гистограмму, основываясь на примерах, подобных этому

 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];
}

Но яможно видеть только одну строку в прямоугольном поле с заголовком «Стол 2» и один черный прямоугольник перед заголовком.тот, который установлен в barPlot.identifier. Но желаемый вывод должен отображать три строки с Major, minor, normal в качестве заголовков. Я чувствую, что метод legendTitleForBarPlot не вызывается, так как результат такой же после комментирования этого метода какхорошо.

This the sceen capture of the output

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Попробуйте изменить значения с помощью

 barChart.legendDisplacement = CGPointMake(-50.0, 80.0);

Поскольку ваше смещение по x слишком велико, и я не знаю диапазон вашего графика. Также легенды будут видны во всех барах. Таким образом, количество записей - это число легенд.

Я не добавил легенды в любое время, но могу дать совет для этого.

0 голосов
/ 13 декабря 2012

Я прошу прощения за то, что еще не задал еще один довольно старый вопрос, и я ценю, что, может быть, уже слишком поздно, чтобы помочь TechnocraT.

Однако у меня была точно такая же проблема, когда названия легенды просто не отображались правильно для моей гистограммы. Первоначальный образец Legend появится с моим выбором цвета фона и т. Д., Но на самом деле ничего не скажет, что обозначали линии графика.

@ Эрик Скроч был совершенно прав (неудивительно) в своем комментарии проверки того, что метод был реализован в классе источника данных. Или, скорее, убедившись, что делегат графика был установлен правильно.

В моем случае я следовал типично отличному учебнику Core Plot с сайта Рэя Вендерлиха, и это разделяет конфигурацию Plot, Graph и Axes на отдельные методы. Когда я пришел к настройке своих легенд, я просто потерял соответствующий код и поместил его перед установкой делегата графа для моего класса (self в моем случае).

Короче говоря, после того, как я поместил код конфигурации Legend после graph.delegate = self; Скажите, все было хорошо.

Animal451

Это не очень хороший ответ, но это ответ.

...