【问题标题】:in core-plot, how do I get my axes to float?在核心情节中,我如何让我的轴浮动?
【发布时间】:2010-09-07 04:52:30
【问题描述】:

我尝试将 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");

有什么想法吗?

【问题讨论】:

  • 我真的不知道我在这里做什么。我一直在挑选看起来相关的 CPTestApp 代码和复制/粘贴位。如果有人可以制作一个浮动轴的最小示例,那真是太棒了。

标签: objective-c core-plot


【解决方案1】:

我也一直在玩演示应用程序,让绘图来做我需要的事情。使用 CPTestApp-Iphone 作为基础,我开始使用 CPTestAppScatterPlotController.m

首先我做到了:

y.isFloatingAxis = YES;
x.isFloatAxis = YES;

点击“运行”后,轴似乎消失了,但如果你仔细观察,它们仍然在那里。在屏幕的左侧和底部有刻度线,很难看到。

要查看标签,我们需要添加一些额外的填充。请注意,在 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;

可以让标签出现。

【讨论】:

  • 我已经在图表上添加了填充,但是将填充添加到 plotAreaFrame 为我解决了这个问题,谢谢!
【解决方案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];

【讨论】:

    【解决方案3】:

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

    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 中找到。

    所以我想我在这里回答了我自己的问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多