简体   繁体   English

是否将y轴固定在适当的位置?

[英]Keeping the y-axis fixed at place?

this is the code in the continuation of this question.... Allow horizontal scrolling only in the core-plot barchart? 这是继续该问题的代码。... 仅允许在核心绘图条形图中进行水平滚动?

-(BOOL)pointingDeviceDraggedAtPoint:(CGPoint)interactionPoint
{
    if ( !self.allowsUserInteraction || !self.graph.plotArea ) {
        return NO;
    }
    CGPoint pointInPlotArea = [self.graph.plotArea convertPoint:interactionPoint toLayer:self.graph.plotArea];

    if ( isDragging ) {

        pointInPlotArea.y = lastDragPoint.y;//-- Madhup Changed it for allwoing scrolling only in horizontal direction --//




        //-- Madhup Changed it for allwoing scrolling only in horizontal direction --//

        //CGPoint displacement = CGPointMake(pointInPlotArea.x-lastDragPoint.x, pointInPlotArea.y-lastDragPoint.y);
        CGPoint displacement = CGPointMake(pointInPlotArea.x-lastDragPoint.x, 0);
          //--******************************--//
        CGPoint pointToUse = pointInPlotArea;

        // Allow delegate to override
        if ( [self.delegate respondsToSelector:@selector(plotSpace:willDisplaceBy:)] ) {
            displacement = [self.delegate plotSpace:self willDisplaceBy:displacement];
            pointToUse = CGPointMake(lastDragPoint.x+displacement.x, lastDragPoint.y+displacement.y);
        }

        NSDecimal lastPoint[2], newPoint[2];
        [self plotPoint:lastPoint forPlotAreaViewPoint:lastDragPoint];
        [self plotPoint:newPoint forPlotAreaViewPoint:pointToUse];

        CPPlotRange *newRangeX = [[self.xRange copy] autorelease];
        CPPlotRange *newRangeY = [[self.yRange copy] autorelease];
        NSDecimal shiftX = CPDecimalSubtract(lastPoint[0], newPoint[0]);
        NSDecimal shiftY = CPDecimalSubtract(lastPoint[1], newPoint[1]);
        newRangeX.location = CPDecimalAdd(newRangeX.location, shiftX);
        newRangeY.location = CPDecimalAdd(newRangeY.location, shiftY);

        // Delegate override
        if ( [self.delegate respondsToSelector:@selector(plotSpace:willChangePlotRangeTo:forCoordinate:)] ) {
            newRangeX = [self.delegate plotSpace:self willChangePlotRangeTo:newRangeX forCoordinate:CPCoordinateX];
            newRangeY = [self.delegate plotSpace:self willChangePlotRangeTo:newRangeY forCoordinate:CPCoordinateY];
        }

        self.xRange = newRangeX;
        self.yRange = newRangeY;

        //-- Madhup Changed it for keeping y axis fixed  --//
        NSLog(@"%@",self.graph.axisSet.axes);

        NSMutableArray *axisArr= [[NSMutableArray alloc] initWithArray:self.graph.axisSet.axes];
        CPXYAxis *yAxis = [axisArr objectAtIndex:1];
        CGPoint point = yAxis.position;
        point.y -= lastDragPoint.x;
        yAxis.position = point;
        [axisArr replaceObjectAtIndex:1 withObject:yAxis];
        self.graph.axisSet.axes = axisArr;
        [axisArr release];

        NSLog(@"%@",self.graph.axisSet.axes);
            //--******************************--//

        lastDragPoint = pointInPlotArea;



        return YES;
    }

    return NO;
}

Now from the code you people can see that i am able to stop the scrolling of map only in horizontal direction, but still I am not able to keep the y-axis fixed. 现在,从代码中,您可以看到我只能在水平方向上停止地图滚动,但是仍然无法保持y轴固定。 I have written some code for that in this method too but it does not seem to be working. 我也用这种方法为此编写了一些代码,但是似乎没有用。

if you want to fix axis when scrolling add this lines 如果要在滚动时固定轴,请添加以下行

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

axisSet.xAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];
axisSet.yAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];

The original question now has two viable solutions that work for the latest, as of this date, code in the repository. 最初的问题现在有两个可行的解决方案,这些解决方案可用于截止到目前为止存储库中的最新代码。

Allow horizontal scrolling only in the core-plot barchart? 只允许在核心图条形图中进行水平滚动吗?

To keep the graph only in quadrant one: 要将图形仅保留在第一象限中:

Allow horizontal scrolling only in the core-plot barchart? 只允许在核心图条形图中进行水平滚动吗?

To only allow scrolling in the horizontal: 只允许水平滚动:

Allow horizontal scrolling only in the core-plot barchart? 只允许在核心图条形图中进行水平滚动吗?

I've used both solutions with a scatter plot and it works great. 我在散点图中都使用了这两种解决方案,效果很好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM