我正在使用Core-Plot构建一个带有漂亮图形的mac osx应用程序。它是一个折线图(散点图),上面有多个点,用plotsymbol圆圈可视化。 我的目标是当用户将鼠标悬停在图表中的某个点上时,显示一个带有该点值的标签。
我已经将NSTracking添加到图表中,但是这有效但我在如何将绘图点/ plotsymbol转换为坐标时迷失了所以我知道它何时翻转点并显示标签。
有人有想法吗? 谢谢大家
答案 0 :(得分:2)
您可以使用-indexOfVisiblePointClosestToPlotAreaPoint:
方法找出哪个绘图符号最接近某个像素。此方法返回该点的数据源索引;您可以查看数据源提供的原始数据以获取实际值。 plotSymbolMarginForHitDetection
属性控制点在注册为命中点之前与给定点的接近程度。
答案 1 :(得分:1)
我的解决方案将是这样的:
(我假设图表不显示任何标签。只有当鼠标悬停在图表上的一个点上时才会显示标签。)
在你处理鼠标逻辑的地方,你会这样做:
NSDecimalNumber *tickLocation = [NSDecimalNumber numberWithDouble:"The relevant axis value of the object you have the mouse over"];
NSString *labelText = @"The text of the label";
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:1];
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText: labelText textStyle:axisSet."Whatever axis you want -X/Y".labelTextStyle];
label.tickLocation = [tickLocation decimalValue];
label.offset = axisSet."Whatever axis you want -X/Y".labelOffset + axisSet."Whatever axis you want -X/Y".majorTickLength;
label.rotation = M_PI/4;
[customLabels addObject:label];
axisSet."Whatever axis you want -X/Y".axisLabels = [NSSet setWithArray:customLabels];
希望这有帮助。