Цвет среза PieChart Core-Plate

Я использую основной сюжет в одном из моих проектов iPhone. Можно ли изменить цвет для выбранного фрагмента в круговой диаграмме (используя CPPieChartDataSource, CPPieChartDelegate)?

Ответ 1

Внесите следующий метод в источник данных pie chart:

-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index; 

CPFill может быть цветом, изображением или градиентом.

Ответ 2

В вашем .h файле

#import "CPTPieChart.h"
@interface YourViewController : UIViewController<CPTPlotDataSource,CPTPieChartDataSource, CPTPieChartDelegate>
{   
}

в вашем .m файле

-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index
{    
    CPTFill *areaGradientFill ;

    if (index==0)
        return areaGradientFill= [CPTFill fillWithColor:[CPTColor orangeColor]];
    else if (index==1)
        return areaGradientFill= [CPTFill fillWithColor:[CPTColor greenColor]];
    else if (index==2)
        return areaGradientFill= [CPTFill fillWithColor:[CPTColor yellowColor]];

    return areaGradientFill;
}

Он изменит цвет среза PieChart. Благодаря

Ответ 3

Я добавил это в мой .m файл (который является файлом источника данных для круговой диаграммы). Цвета уродливые - просто использовали их для тестирования, поскольку они действительно отличаются от значений по умолчанию. И в моем графике есть только три среза, следовательно, жестко закодированные 3 цвета. Я нашел документацию Core Plot полезной для всего этого. Здесь ссылка на документацию метода fillWithColor. ПРИМЕЧАНИЕ. Теперь вам нужно использовать CPT как префикс, а не старый CP.

-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
  {
     CPTFill *color;

     if (index == 0) {     
      color = [CPTFill fillWithColor:[CPTColor purpleColor]]; 

    } else if (index == 1) {
      color = [CPTFill fillWithColor:[CPTColor blueColor]];


    } else {
      color = [CPTFill fillWithColor:[CPTColor blackColor]];
            }

        return color;
 }

Извините, если я испортил запись ответа - это мой первый пост в StackOverflow

Ответ 4

Быстрая версия:

func sliceFillForPieChart (pieChart: CPTPieChart, recordIndex: UInt) -> CPTFill {
    switch (recordIndex+1) {
    case 1:
        return CPTFill(color:CPTColor.greenColor());
    case 2:

        return CPTFill(color:CPTColor.redColor());
    default:
        return CPTFill(color:CPTColor.orangeColor());
    }

}