Core Plot CPTScatterPlot'Line Graph'未显示

时间:2012-06-11 10:55:10

标签: iphone objective-c ios core-plot

所以我的问题很简单。我试图将我的图表从条形图切换到折线图,但我的折线图不显示/绘图。我在CPTBarPlot'条形图'中使用了类似的代码,这个图正确显示。

我正确绘制的条形图代码是:

CPTBarPlot *barPlot             = nil;    
barPlot                         = [CPTBarPlot tubularBarPlotWithColor:[CPTColor colorWithComponentRed:0.9294f green:0.3960f blue:0.5921f alpha:1.0f] horizontalBars:NO];
barPlot.fill                    = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:0.9294f green:0.3960f blue:0.5921f alpha:1.0f]];
barPlot.opacity                 = 0.8f;
barPlot.dataSource              = self;
barPlot.delegate                = self;
barPlot.baseValue               = CPTDecimalFromString(@"0");
barPlot.barOffset               = CPTDecimalFromFloat(0.50f);

switch (graphType) {
    case kWeightThreeMonth:
    {
        barPlot.identifier  = [GraphsViewController threeMonthBarPlotIdentifier];
    }
        break;

    case kWeightSixMonth:
    {
        barPlot.identifier  = [GraphsViewController sixMonthBarPlotIdentifier];
    }
        break;

    case kWeightNineMonth:
    {
        barPlot.identifier  = [GraphsViewController nineMonthBarPlotIdentifier];
    }
        break;  
    default:
        break;
} 
barPlot.barCornerRadius         = 2.0f;
barPlot.lineStyle               = nil;
[lineGraph addPlot:barPlot toPlotSpace:plotSpace];

我的线图代码未显示为:

// Create a blue plot area
CPTScatterPlot *boundLinePlot   = [[[CPTScatterPlot alloc] init] autorelease];
CPTMutableLineStyle *lineStyle  = [CPTMutableLineStyle lineStyle];
lineStyle.miterLimit            = 1.0f;
lineStyle.lineWidth             = 3.0f;
lineStyle.lineColor             = [CPTColor redColor];
boundLinePlot.dataLineStyle     = lineStyle;
switch (graphType) {
    case kWeightThreeMonth:
    {
        boundLinePlot.identifier  = [GraphsViewController threeMonthBarPlotIdentifier];
    }
        break;

    case kWeightSixMonth:
    {
        boundLinePlot.identifier  = [GraphsViewController sixMonthBarPlotIdentifier];
    }
        break;

    case kWeightNineMonth:
    {
        boundLinePlot.identifier  = [GraphsViewController nineMonthBarPlotIdentifier];
    }
        break;  
    default:
        break;
} 

boundLinePlot.dataSource    = self;
boundLinePlot.delegate      = self;
[lineGraph addPlot:boundLinePlot toPlotSpace:plotSpace];

// Do a blue gradient
CPTColor *areaColor1        = [CPTColor colorWithComponentRed:0.3 green:0.3 blue:1.0 alpha:0.8];
CPTGradient *areaGradient1  = [CPTGradient gradientWithBeginningColor:areaColor1 endingColor:[CPTColor clearColor]];
areaGradient1.angle         = -90.0f;
CPTFill *areaGradientFill   = [CPTFill fillWithGradient:areaGradient1];
boundLinePlot.areaFill      = areaGradientFill;
boundLinePlot.areaBaseValue = [[NSDecimalNumber zero] decimalValue];

// Add plot symbols
CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle];
symbolLineStyle.lineColor   = [CPTColor blackColor];
CPTPlotSymbol *plotSymbol   = [CPTPlotSymbol ellipsePlotSymbol];
plotSymbol.fill             = [CPTFill fillWithColor:[CPTColor blueColor]];
plotSymbol.lineStyle        = symbolLineStyle;
plotSymbol.size             = CGSizeMake(10.0, 10.0);
boundLinePlot.plotSymbol    = plotSymbol;

我在这里遗漏了什么吗?考虑到Bar Plot正常工作,我认为数据源等都会以相同的方式工作。我只想尝试从条形图切换到折线图。

非常感谢任何帮助。

亲切的问候, 丹

2 个答案:

答案 0 :(得分:1)

您可能需要重新加载地块的数据。试着这样做:

[lineGraph reloadData]

答案 1 :(得分:1)

这实际上是我自己的错。

在dataSource方法中;

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index

我正在做一个if语句;

if ( [plot isKindOfClass:[CPTBarPlot class]] ){

当然我使用的是CPTScatterPlot,因此我的代码没有被调用。卫生署。