Unable to display two CorePlot charts simultaneously

I have a problem with two different CorePlot charts displayed in the same view. I set up two types of hosting in my view, and all the reference points are connected correctly. Only one of the graphs is correctly displayed. Adding quick NSLog in the method numberForPlotshows that only fills the first graph ( graphand graphView), and not the second ( trendand trendView). Here is the code:

- (void) graphSetup {
    CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];

    graph = (CPTXYGraph *)[theme newGraph]; 

    graphView.hostedGraph = graph;
    graphView.allowPinchScaling = YES;

    graph.paddingLeft = -5;
    graph.paddingTop = 0;
    graph.paddingRight = -5;
    graph.paddingBottom = -5;
    graph.fill = nil;
    graph.plotAreaFrame.fill = nil;
    int a = 0;
    for (int i = 0; i < [romAveragesArray count]; i++) {
        if ([romAveragesArray objectAtIndex:i] != NULL)
            a++;
    }

    int localMax = 0;
    int localMin = 0;

    for (int a = 0; a < [romAveragesArray count]; a++) {
        if ([[romAveragesArray objectAtIndex:a] getValue] > localMax)
            localMax = [[romAveragesArray objectAtIndex:a] getValue];
        else if ([[romAveragesArray objectAtIndex:a] getValue] < localMin)
            localMin = [[romAveragesArray objectAtIndex:a] getValue];
    }

    for (int a = 0; a < [obaAveragesArray count]; a++) {
        if ([[obaAveragesArray objectAtIndex:a] getValue] > localMax)
            localMax = [[obaAveragesArray objectAtIndex:a] getValue];
        else if ([[obaAveragesArray objectAtIndex:a] getValue] < localMin)
            localMin = [[obaAveragesArray objectAtIndex:a] getValue];

    }


    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0)
                                                    length:CPTDecimalFromInt(145)];
    NSLog(@"%d",a);
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0)
                                                    length:CPTDecimalFromInt(localMax+15)];




    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;

    CPTXYAxis *x = axisSet.xAxis;
    x.majorIntervalLength = CPTDecimalFromFloat(10);
    x.minorTicksPerInterval = 2;
    x.borderWidth = 0;
    x.labelExclusionRanges = [NSArray arrayWithObjects:
                              [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) 
                                                           length:CPTDecimalFromFloat(300)], 
                              nil];;

    CPTXYAxis *y = axisSet.yAxis;
    y.majorIntervalLength = CPTDecimalFromFloat(10);
    y.minorTicksPerInterval = 1;
    y.labelExclusionRanges = [NSArray arrayWithObjects:
                              [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) 
                                                           length:CPTDecimalFromFloat(300)], 
                              nil];





    CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init];
    dataSourceLinePlot.identifier = @"Obama";
    dataSourceLinePlot.dataSource = self;
    CPTMutableLineStyle *style = [CPTMutableLineStyle lineStyle];
    style.lineColor = [CPTColor colorWithComponentRed:0.3215686274509804 green:0.6078431372549019 blue:1.0 alpha:1.0];
    dataSourceLinePlot.dataLineStyle = style;
    [graph addPlot:dataSourceLinePlot];


    CPTScatterPlot *dataSourceLinePlot1 = [[CPTScatterPlot alloc] init];
    dataSourceLinePlot1.identifier = @"Rom";
    dataSourceLinePlot1.dataSource = self;
    CPTMutableLineStyle *style1 = [CPTMutableLineStyle lineStyle];
    style1.lineColor = [CPTColor colorWithComponentRed:0.9803921568627451 green:0.47058823529411764 blue:0.47058823529411764 alpha:1.0];
    dataSourceLinePlot1.dataLineStyle = style1;
    [graph addPlot:dataSourceLinePlot1];
     [self trendSetup];

    [self postStats];

}


- (void) trendSetup {
    CPTTheme *theme1 = [CPTTheme themeNamed:kCPTPlainWhiteTheme];

    trend = (CPTXYGraph *) [theme1 newGraph];
    trendView.allowPinchScaling = YES;
    trendView.hostedGraph = trend;

    trend.paddingLeft = -5;
    trend.paddingRight = -5;
    trend.paddingTop = 0;
    trend.paddingBottom = -5;
    trend.fill =  nil;
    trend.plotAreaFrame.fill = nil;
    int obaMax, localMax;
    for (int i = 0; i < [obaArray count]; i++)
        obaMax += [[obaArray objectAtIndex:i] getValue];

    int romMax;
    for (int i = 0; i < [romArray count]; i++)
        romMax += [[romArray objectAtIndex:i] getValue];

    if (romMax > obaMax)
        localMax = romMax;
    else
        localMax = obaMax;

    CPTXYPlotSpace *trendSpace = (CPTXYPlotSpace *)trend.defaultPlotSpace;
    trendSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(504)];
    trendSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(localMax)];

    CPTXYAxisSet *trendSet = (CPTXYAxisSet *)trend.axisSet;

    CPTXYAxis *trendX = trendSet.xAxis;
    trendX.majorIntervalLength = CPTDecimalFromInt(10);
    trendX.minorTicksPerInterval = 2;
    trendX.borderWidth  = 0;
    trendX.labelExclusionRanges = [NSArray arrayWithObjects:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) length:CPTDecimalFromFloat(300)], nil];;

    CPTXYAxis *trendY = trendSet.xAxis;
    trendY.majorIntervalLength = CPTDecimalFromInt(10);
    trendY.minorTicksPerInterval = 2;
    trendY.borderWidth  = 0;
    trendY.labelExclusionRanges = [NSArray arrayWithObjects:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) length:CPTDecimalFromFloat(300)], nil];;

    CPTScatterPlot *trendSourceLinePlot = [[CPTScatterPlot alloc] init];
    trendSourceLinePlot.identifier = @"Obama Trend";
    trendSourceLinePlot.dataSource = self;
    CPTMutableLineStyle *style3 = [CPTMutableLineStyle lineStyle];
    style3.lineColor = [CPTColor colorWithComponentRed:0.3215686274509804 green:0.6078431372549019 blue:1.0 alpha:1.0];
    trendSourceLinePlot.dataLineStyle = style3;
    [trend addPlot:trendSourceLinePlot];


    CPTScatterPlot *trendSourceLinePlot1 = [[CPTScatterPlot alloc] init];
    trendSourceLinePlot1.identifier = @"Rom Trend";
    trendSourceLinePlot1.dataSource = self;
    CPTMutableLineStyle *style4 = [CPTMutableLineStyle lineStyle];
    style4.lineColor = [CPTColor colorWithComponentRed:0.9803921568627451 green:0.47058823529411764 blue:0.47058823529411764 alpha:1.0];
    trendSourceLinePlot1.dataLineStyle = style4;
    [trend addPlot:trendSourceLinePlot1];

}
+3
source share
2 answers

This is what I found wrong with your code, and I think this is the reason Eric asked you if both types of hosting are visible.

CPTXYGraph, graph, trend. , Builder, CPTXYGraph s. trendSourceLinePlot trendSourceLinePlot1 trend graph.

, CPTXYGraph. , ...

  • trentSetup

    CPTTheme *theme1 = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
    trend = (CPTXYGraph *) [theme1 newGraph];
    trendView.allowPinchScaling = YES;
    trendView.hostedGraph = trend;
    trend.paddingLeft = -5;
    trend.paddingRight = -5;
    trend.paddingTop = 0;
    trend.paddingBottom = -5;
    trend.fill =  nil;
    trend.plotAreaFrame.fill = nil;
    
  • [trend addPlot:trendSourceLinePlot];
    [trend addPlot:trendSourceLinePlot1];
    

    [graph addPlot:trendSourceLinePlot];
    [graph addPlot:trendSourceLinePlot1];
    

.

0

Y . .

0

All Articles