我尝试将isFloatingAxis设置为YES,但它只会让我的轴消失。我的轴设置如下:
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");
有什么想法吗?
答案 0 :(得分:3)
我也一直在使用演示应用程序来获取我需要的图表。使用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;
可以让标签出现。
答案 1 :(得分:2)
https://github.com/djw/core-plot/tree/9282845bddbb8c40ff314bbfa158beff797c91f7/examples
这表明isFloatingAxis属性已从至少0.9版本中删除。
我发现问题108也解决了这个问题,并提供了一个查看CorePlot如何处理变更的地方:http://code.google.com/p/core-plot/issues/detail?id=108
浮动轴的新方法似乎是设置其约束:
x.axisConstraints = [CPTConstraints constraintWithUpperOffset:132];
答案 2 :(得分:1)
好吧,看起来有约束是关键。所以我应该
CPConstraints y2Constraints = {CPConstraintFixed, CPConstraintFixed};
yKin.isFloatingAxis = YES;
yKin.constraints = y2Constraints;
也在那里。如果你使用CPConstraintNone
代替,那么当你调整它所在的视图时,轴实际上会移动,直到程序第一次启动时它看起来根本不存在。固定保持到位。现在想弄清楚如何定位......
哦,还有一点需要知道:当设置为浮动时,轴可以显示在正常绘图空间之外。您可以通过修改原点来精确调整位置,例如
xKin.orthogonalCoordinateDecimal = CPDecimalFromString(@"0.5");
我不确定这些单位到底是什么,所以你可能不得不玩这些数字来找到你想要的那个。
如果您希望轴显示在绘图的底部和左侧,并保持在那里,您还有一件事要做。因为您将位置设置为0,使用上面的.orthogonalCoordinateDecimal技巧,它们实际上将显示在绘图空间之外,因此似乎已消失。当我第一次设置setIsFloatingAxis:YES
时,我的程序就是这种情况。要解决此问题,您必须向plotAreaFrame添加一些填充。请注意,这与CPTestApp主要部分中的填充不同,后者为[graph setPaddingLeft:0];
相反,请使用graph.plotAreaFrame.paddingTop = 20.0;
(或等效地,[[graph plotAreaFrame] setPaddingTop: 20.0];
可以在CPTestApp的AxisDemoController.m中找到完整的示例。
所以我想我在这里回答了我自己的问题?