使用核心图将基于圆半径的散点图绘制到Y轴

时间:2015-04-01 13:38:22

标签: ios objective-c iphone xcode core-plot

我有一个散点图,我在其中绘制圆圈。它绘制得很好,我根据用户设备的宽高比进行缩放。圆圈的大小可能会有很大的不同,所以我想相应地缩放图表空间。问题是当我使用

[graph.defaultPlotSpace scaleToFitPlots:graph.allPlots];

相对于y轴进行缩放。我得到了完美的圆圈,因为我使用纵横比,但由于这是纵向方向,并且缩放是相对于y轴完成的,因此圆圈在x轴上被截断。由于x轴在纵横比I'方面较短,所以相反需要相对于它进行缩放。这可能吗?

我想要实现的目标是缩小"或"规模"我的plotSpace所以我的所有圈子都适合于plotSpace,我似乎无法在不打破纵横比的情况下弄清楚这一点,从而获得了延伸的圆圈。

看起来像这样: enter image description here

我希望它看起来像这样: enter image description here

编辑:

我目前用于扩展的代码:

[self.mGraph layoutIfNeeded];
[self.mGraph.defaultPlotSpace scaleToFitPlots:self.mGraph.allPlots];

float width = self.mGraph.plotAreaFrame.bounds.size.width;
float height = self.mGraph.plotAreaFrame.bounds.size.height;

float aspectRatio = width / height;

CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.0f * aspectRatio)];
plotSpace.xRange = xRange;
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy];
[yRange expandRangeByFactor:CPTDecimalFromCGFloat(1.0f)];
plotSpace.yRange = yRange;

1 个答案:

答案 0 :(得分:1)

您可以从size图层的plotArea计算绘图区域的纵横比。首先在图表上调用-layoutIfNeeded以确保尺寸是最新的。使用计算的宽高比调整由-scaleToFitPlots:计算的绘图范围。


缩放后,获取绘图区域的大小和绘图范围的长度:

CGSize paSize = self.mGraph.plotAreaFrame.plotArea.bounds.size;
double xLen = plotSpace.xRange.lengthDouble;
double yLen = plotSpace.yRange.lengthDouble;

您希望比率xLen / yLen最终与paSize.width / paSize.height相同。将xRangeyRange展开大于一(1)的因子,使比率相等。