核心图 - 如何使用对数轴将绘图空间中的触摸点转换为绘图点

时间:2012-05-02 01:22:39

标签: objective-c ios core-plot

我有一个带有线性y轴和对数x轴的散点图,所有这些都很有效。但是当我尝试将触摸点转换为绘图空间坐标时,我遇到了问题。

我见过以下建议的地方:

- (BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent:(id)event atPoint:(CGPoint)point
{
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)space;

CPTScatterPlot *scatterPlot = [[[plotSpace graph] allPlots] objectAtIndex:0]; 
CGPoint plotAreaPoint = [[plotSpace graph] convertPoint:point toLayer:scatterPlot];

NSLog(@"PlotAreaPoint : %.1f, %.1f", plotAreaPoint.x, plotAreaPoint.y);

NSDecimal dataPoint[2];
NSDecimalNumber *xCoordinate, *yCoordinate;

[plotSpace plotPoint:dataPoint forPlotAreaViewPoint:plotAreaPoint];

xCoordinate = [NSDecimalNumber decimalNumberWithDecimal:dataPoint[0]];
yCoordinate = [NSDecimalNumber decimalNumberWithDecimal:dataPoint[1]];

NSLog(@"DataPoint : %.1f, %.1f", [xCoordinate floatValue], [yCoordinate floatValue]);

return YES;
}

当我运行它时,plotAreaPoint似乎是正确的,并且yCoordinate是正确的。如果我点击左边缘(5.0)或右边缘(500.0),x坐标是正确的,但如果我点击中间,则行为类似于线性轴。如果我在中间点击,我得到250.0左右,而不是50.0。我错过了什么,还是有其他方法可以做到这一点?

谢谢,蒂姆

1 个答案:

答案 0 :(得分:0)

这是一个错误。请在Core Plot issue tracker上报告。