我有一个散点图,我在其中绘制圆圈。它绘制得很好,我根据用户设备的宽高比进行缩放。圆圈的大小可能会有很大的不同,所以我想相应地缩放图表空间。问题是当我使用
时[graph.defaultPlotSpace scaleToFitPlots:graph.allPlots];
相对于y轴进行缩放。我得到了完美的圆圈,因为我使用纵横比,但由于这是纵向方向,并且缩放是相对于y轴完成的,因此圆圈在x轴上被截断。由于x轴在纵横比I'方面较短,所以相反需要相对于它进行缩放。这可能吗?
我想要实现的目标是缩小"或"规模"我的plotSpace所以我的所有圈子都适合于plotSpace,我似乎无法在不打破纵横比的情况下弄清楚这一点,从而获得了延伸的圆圈。
看起来像这样:
我希望它看起来像这样:
编辑:
我目前用于扩展的代码:
[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;
答案 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
相同。将xRange
或yRange
展开大于一(1)的因子,使比率相等。