2015-04-01 80 views
0

我有一个散点图,绘制圆圈。它画得很好,我根据用户设备的高宽比进行缩放。圈子的大小可能会有很大的不同,所以我想相应地缩放图块空间。问题是,当我使用使用核心绘图基于圆半径将散点图绘制到Y轴

[graph.defaultPlotSpace scaleToFitPlots:graph.allPlots]; 

缩放是相对于y轴完成的。由于我使用纵横比,因此我得到了完美的圆形,但由于这是纵向定位,并且相对于y轴完成缩放,所以圆形会在x轴上截断。由于x轴在高宽比方面较短,我想就其进行缩放。那可能吗?

我想要实现的是“缩小”或“缩放”我的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

您可以从计算绘图区域的高宽比plotArea层的210个。请先在图上拨打-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的因子,以使比率相等。

+0

嗯,你可以发布代码示例?我无法得到这个工作。 – ClockWise 2015-04-02 06:29:48

+0

我使用代码编辑了我的原始帖子:) – ClockWise 2015-04-07 07:53:52

+0

感谢您的帮助。我并没有完全按照你上面所说的做,但是我意识到,在我目前的情况下,比率是0.5,所以我只是将x和y的长度乘以2,以保持宽高比和双倍距离以使它更适合对于x轴而不是y轴。 – ClockWise 2015-04-08 07:49:15