Objective c 在核心图中,如何使轴浮动?

Objective c 在核心图中,如何使轴浮动?,objective-c,core-plot,Objective C,Core Plot,我尝试将isFloatingAxis设置为“是”,但它只会使我的轴消失。我的轴设置如下: CPXYAxisSet *axisSetKin = (CPXYAxisSet *)kinematicsGraph.axisSet; CPXYAxis *xKin = axisSetKin.xAxis; [xKin setIsFloatingAxis:YES]; xKin.labelingPolicy = CPAxisLabelingPolicyAutomatic; xKin.orthogonalCoordi

我尝试将isFloatingAxis设置为“是”,但它只会使我的轴消失。我的轴设置如下:

CPXYAxisSet *axisSetKin = (CPXYAxisSet *)kinematicsGraph.axisSet;
CPXYAxis *xKin = axisSetKin.xAxis;
[xKin setIsFloatingAxis:YES];
xKin.labelingPolicy = CPAxisLabelingPolicyAutomatic;
xKin.orthogonalCoordinateDecimal = CPDecimalFromString(@"0");
xKin.minorTicksPerInterval = 4;
xKin.preferredNumberOfMajorTicks = 9;
xKin.majorGridLineStyle = majorGridLineStyleKin;
xKin.minorGridLineStyle = minorGridLineStyleKin;
xKin.labelOffset = 10.0;
xKin.title = @"Lab Angle";
xKin.titleOffset = 30.0;
xKin.titleLocation = CPDecimalFromString(@"2.7");

有什么想法吗?

好的,看来约束是关键。所以我应该

CPConstraints y2Constraints = {CPConstraintFixed, CPConstraintFixed};
    yKin.isFloatingAxis = YES;
    yKin.constraints = y2Constraints;
也在那里。如果改用
CPConstraintNone
,则当您调整轴所在视图的大小时,它实际上会四处移动,直到程序首次启动时它可能看起来根本不在那里。固定保持它的位置。现在想知道如何定位它

哦,还有一点需要知道:轴,当设置为浮动时,可以显示在正常绘图空间之外。您可以通过修改原点来精确调整位置,例如

    xKin.orthogonalCoordinateDecimal = CPDecimalFromString(@"0.5");
我不确定具体的单位是什么,所以你可能需要在这些数字中找到你想要的

如果希望轴显示在绘图的底部和左侧,并保持不变,则还有一件事要做。由于使用上面的.OrthogonalCoordinatedCimal技巧将位置设置为0,因此它们实际上会显示在绘图空间之外,因此看起来已经消失。当我第一次设置
setIsFloatingAxis:YES
时,我的程序就是这样。要解决此问题,必须向plotAreaFrame添加一些填充。请注意,这与CPTestApp主要部分中的填充不同,后者是
[graph setPaddingLeft:0]
而是使用
graph.plotAreaFrame.paddingTop=20.0(或等效地,
[[graph plotAreaFrame]setPaddingTop:20.0];

这方面的完整示例可以在CPTestApp的AxisDemoController.m中找到


因此,我想我在这里回答了我自己的问题?

我也一直在玩演示应用程序,以获得我需要的绘图。使用CPTestApp Iphone作为基础,我开始玩CPTestAppScatterPlotController.m

首先我做了:

y.isFloatingAxis = YES;
x.isFloatAxis = YES;
点击“Run”后,轴似乎消失了,但如果你仔细观察,它们仍然在那里。在屏幕的左侧和底部,记号在那里,只是很难看到

要查看标签,我们需要添加一些额外的填充。请注意,在CPTestAppScatterPlotController.m的顶部,我们为图形本身设置了一些填充:

graph.paddingLeft = 10.0;
graph.paddingTop = 10.0;
graph.paddingRight = 10.0;
graph.paddingBottom = 10.0;
如果我们加上:

graph.plotAreaFrame.paddingLeft = 30.0;
graph.plotAreaFrame.paddingBottom = 30.0;
可以让标签显示。

这表明isFloatingAxis属性已从至少0.9版中删除

我发现第108期也解决了这一问题,并提供了一个地方来查看CorePlot如何处理更改:

浮动轴的新方法似乎是设置其约束:

x.axisConstraints = [CPTConstraints constraintWithUpperOffset:132];

我真的不知道我在这里做什么。我一直在挑选CPTestApp代码和似乎相关的复制/粘贴位。如果有人能想出一个浮动轴的最小示例,那将是非常棒的。我已经在图形上添加了填充,但将填充添加到绘图区域框架为我解决了这个问题,谢谢!