Core-Plot PieChart切片颜色

时间:2010-09-02 16:55:38

标签: iphone core-plot

我在我的一个iPhone项目中使用核心情节。是否可以更改饼图中所选切片的颜色(使用CPPieChartDataSource,CPPieChartDelegate)?

4 个答案:

答案 0 :(得分:18)

在饼图数据源中实现以下方法:

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

CPFill可以是颜色,图像或渐变。

答案 1 :(得分:5)

在你的.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 Slice颜色。感谢

答案 2 :(得分:1)

我将此添加到我的.m文件(这是饼图的数据源文件)。颜色很难看 - 只是用它们来测试,因为它们与默认值完全不同。在我的图表中只有三个切片,因此硬编码的3种颜色。我发现Core Plot文档对所有这些都有帮助。 Here's the link to the fillWithColor method documentation。注意:您现在需要使用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上的第一篇文章

答案 3 :(得分:0)

Swift版本:

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());
    }

}