Coreplot:根据绘图数据自动缩放y轴标签

时间:2014-07-18 15:56:38

标签: ios objective-c core-plot

two graph plots using coreplot

我正在使用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但是徒劳无功:(。我真的很感激这里有一些帮助。

跟进问题:

Graph within major grid line bounds

Graph NOT within major grid line bounds

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

1 个答案:

答案 0 :(得分: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的长度。