2

だから私の問題は簡単です。グラフを棒グラフから折れ線グラフに切り替えようとしていますが、折れ線グラフが表示/プロットされません。CPTBarPlot 'Bar Chart' に同様のコードを使用すると、正しくプロット/表示されます。

正しくプロットする私のバー プロット コードは次のとおりです。

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;

ここで何か不足していますか?棒グラフが正しく機能することを考えると、データソースなどはすべて同じように機能すると思います。棒グラフから折れ線グラフに切り替えようとしているだけです。

どんな助けでも大歓迎です。

敬具、ダン

4

2 に答える 2

1

プロットのデータをリロードする必要がある場合があります。これを試してください:

[lineGraph reloadData]
于 2012-06-11T10:58:24.240 に答える
1

これは実は自分のせいでした。

dataSource メソッド内。

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

私は次のIfステートメントを行っていました。

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

もちろん、私は CPTScatterPlot を使用していたので、私のコードは呼び出されませんでした。ドー。

于 2012-06-15T15:34:26.940 に答える