【问题标题】:Coreplot: Autoscaling y-axis labels according to plot dataCoreplot:根据绘图数据自动缩放 y 轴标签
【发布时间】:2014-07-18 15:56:38
【问题描述】:

我正在使用 coreplot 根据所附图像在我的移动应用程序上呈现图形。我的问题是图表有时不能很好地缩放 y 轴标签。从图中可以明显看出,最大 y 轴标签为 3500.0,但两个图中的实际 y 轴最大值仅为 2498。这导致从绘图最大值点到 y 轴的空间浪费标签的最大点,从而缩小了我的图表。我的所有图表都不会发生这种情况,而只有少数图表会发生这种情况。理想情况下,我希望 y 轴最大标签设置为 3000。或者更好,如果有办法将最大 y 轴标签显示为 2498 而不是 3500,那就太好了。

这是我设置 y 轴范围的方法:

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)];

ymin  = 1159.000000 and ymax = 2498.000000 //For this example

我曾尝试使用“scaletoFitPlots”但徒劳无功。我只希望 y 轴标签被正确地烫伤,而不是 x 轴标签。我还提到了一些关于堆栈溢出的线程,例如 CorePlot - Set y-Axis range to include all data points 但徒劳无功:(。我真的很感谢这里的一些帮助。

跟进问题:

如果您看到最后两张图,其中一张完全位于 y 轴的主网格线内,而另一张则不在其中,即最大 y 轴标签为 200000.0 并且图的最大值高于此。有没有办法让我的所有图表都落在 y 轴标签最大值的主网格线内?

【问题讨论】:

    标签: ios objective-c core-plot


    【解决方案1】:

    绘图范围由起始位置和长度指定。您给出的范围是 1,159 到 3,657 (1,159 + 2,498)。给定最小值和最大值,范围的长度应​​为 (max - min)。

    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin)
                                                    length:CPTDecimalFromFloat(yMax - yMin)];
    

    刻度线和标签位置由轴标签策略控制。如果您不关心标签是什么,但希望它们位于轴的极端,请使用CPTAxisLabelingPolicyEqualDivisions 标签策略。如果您总是希望标签是“不错”的数字,请将绘图范围扩展到最小和最大数据值之外,以最接近的“不错”值。对于上面的示例(1,159 到 2,498),您可以选择 1,000 的起始位置和 1,500 的长度。

    【讨论】:

    • 太棒了。非常感谢埃里克。在这里感谢您的帮助。我有一个快速跟进的问题要问你。我在上面编辑了我的帖子,并添加了另外两个描述我的问题的快照。如果您也能在这里指导我,我将非常感激。提前致谢!
    猜你喜欢
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多