Ios 我想使用CorePlot从图形中删除负部分?

Ios 我想使用CorePlot从图形中删除负部分?,ios,objective-c,graph,core-plot,Ios,Objective C,Graph,Core Plot,我在我的应用程序中实现了核心绘图库。我想从我的图形中删除负面部分。我在谷歌上搜索了很多次,但找不到任何答案。当我向下滚动图表时,图表上的负值会显示,当我向左滚动时,图表上的负值也会显示。 这是我的密码 -(void)drawGraph{ graph = [[CPTXYGraph alloc] initWithFrame:self.view.bounds]; CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme

我在我的应用程序中实现了核心绘图库。我想从我的图形中删除负面部分。我在谷歌上搜索了很多次,但找不到任何答案。当我向下滚动图表时,图表上的负值会显示,当我向左滚动时,图表上的负值也会显示。 这是我的密码

-(void)drawGraph{

    graph = [[CPTXYGraph alloc] initWithFrame:self.view.bounds];

    CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
    [graph applyTheme:theme];

    hostingView1 = [[CPTGraphHostingView alloc] initWithFrame:self.view.bounds];
    hostingView1.hostedGraph = graph;
    if ([[UIScreen mainScreen] bounds].size.height == 568){
        hostingView1.frame = CGRectMake(15, 5, 290, 220);
    }
    else{
    hostingView1.frame = CGRectMake(15, 3, 290, 135);
    }
    [myGraphView addSubview:hostingView1];
    [myGraphView addSubview:lbl1];
    [myGraphView addSubview:lbl2];

    [lbl1 setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];
    [hostingView1 release];


    graph.paddingLeft = 0;
    graph.paddingTop = 0;
    graph.paddingRight = 0;
    graph.paddingBottom = 0;

    graph.plotAreaFrame.paddingLeft = 35.0 ;
    graph.plotAreaFrame.paddingTop = 20.0 ;
    graph.plotAreaFrame.paddingRight = 5.0 ;
    graph.plotAreaFrame.paddingBottom = 30 ;

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
    plotSpace.allowsUserInteraction = YES;

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(50.0)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(10.0)];

    CPTXYAxisSet *axisSet = (CPTXYAxisSet *) graph.axisSet ;
    CPTXYAxis *x = axisSet.xAxis ;
    x. minorTickLineStyle = nil ;

    x. majorIntervalLength = CPTDecimalFromString (@"10");

    x. orthogonalCoordinateDecimal = CPTDecimalFromString ( @"0" );

    CPTXYAxis *y = axisSet.yAxis ;

    y. minorTickLineStyle = nil ;

    y. majorIntervalLength = CPTDecimalFromString ( @"2" );

    y. orthogonalCoordinateDecimal = CPTDecimalFromString (@"0");

    dataSourceLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
    dataSourceLinePlot.identifier = @"Green Plot";

    CPTMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
    lineStyle.lineWidth = 0.3f;
    lineStyle.lineColor = [CPTColor orangeColor];
    dataSourceLinePlot.dataLineStyle = lineStyle;

    dataSourceLinePlot.opacity = 0.0f;

    dataSourceLinePlot.dataSource = self;
    [graph addPlot:dataSourceLinePlot];

    CPTGradient *areaGradient = [ CPTGradient gradientWithBeginningColor :[CPTColor orangeColor] endingColor :[CPTColor colorWithComponentRed:0.55 green:0.55 blue:0.16 alpha:0.0]];

    areaGradient.angle = -00.0f ;

    CPTFill *areaGradientFill = [ CPTFill fillWithGradient :areaGradient];

    dataSourceLinePlot. areaFill = areaGradientFill;
    dataSourceLinePlot. areaBaseValue = CPTDecimalFromString ( @"0.0" );
    dataSourceLinePlot.interpolation = CPTScatterPlotInterpolationLinear ;


}

让处理图形的视图/对象采用CPTPlotSpaceDelegate协议:

@interface YourViewController () <CPTPlotSpaceDelegate>
最后,让控制器实现CPTPlotSpaceDelegate函数“willChangePlotRangeTo”

-(CPTPlotRange*)绘图空间:(CPTPlotSpace*)空间将把绘图范围更改为:(CPTPlotRange*)坐标的新范围:(CPTCoordinate)坐标
{
如果([newRange locationDouble]<0)
{
如果(坐标==CPT坐标X)
返回[(CPTXYPlotSpace*)空间xRange];
否则如果(坐标==CPT坐标)
返回[(CPTXYPlotSpace*)空间Y范围];
}
返回新范围;
}
这可以通过返回当前打印范围防止打印空间进一步滚动。如果您决定需要更改任一轴的下边界,则可以声明您想要的任何下边界

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
[plotSpace setDelegate:self];
-(CPTPlotRange*)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange *)newRange forCoordinate:(CPTCoordinate)coordinate
{
    if([newRange locationDouble] < 0)
    {
        if(coordinate == CPTCoordinateX)
            return  [(CPTXYPlotSpace*)space xRange];
        else if(coordinate == CPTCoordinateY)
            return [(CPTXYPlotSpace*)space yRange];
    }
    return newRange;
}