Core-Plot Mac:在图中的鼠标悬停点显示标签

问题描述:

我正在用Core-Plot制作一个漂亮图形的mac osx应用程序。它的一个折线图(scatterplot)上有多个点,可以用一个plotsymbol圈显示出来。 我的目标是在用户将鼠标悬停在图表上的一个点上时显示一个标签,其中包含点的值。Core-Plot Mac:在图中的鼠标悬停点显示标签

我已经添加了NSTracking到图表,这个工程,但我迷失在如何翻译坐标点/ plotsymbol到坐标,所以我知道什么时候翻转一个点并显示标签。

有人有想法吗? 谢谢沿着这些线路的所有

我的解决办法是什么:

(我假设图不显示任何标签,只有当鼠标在图表上的一个点被显示的标签。)

在你处理鼠标逻辑的地方,你会怎么做:

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]; 

希望这有助于。

您可以使用-indexOfVisiblePointClosestToPlotAreaPoint:方法找出哪个图形符号最接近某个像素。此方法返回该点的数据源索引;您可以查看数据源提供的原始数据以获取实际值。 plotSymbolMarginForHitDetection属性控制点注册为点击之前该点必须与给定点有多接近。