2012-02-27 107 views
1

我正在用Core-Plot製作一個漂亮圖形的mac osx應用程序。它的一個折線圖(scatterplot)上有多個點,可以用一個plotsymbol圈顯示出來。 我的目標是在用戶將鼠標懸停在圖表上的一個點上時顯示一個標籤,其中包含點的值。Core-Plot Mac:在圖中的鼠標懸停點顯示標籤

我已經添加了NSTracking到圖表,這個工程,但我迷失在如何翻譯座標點/ plotsymbol到座標,所以我知道什麼時候翻轉一個點並顯示標籤。

有人有想法嗎? 謝謝沿着這些線路的所有

回答

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

希望這有助於。

2

您可以使用-indexOfVisiblePointClosestToPlotAreaPoint:方法找出哪個圖形符號最接近某個像素。此方法返回該點的數據源索引;您可以查看數據源提供的原始數據以獲取實際值。 plotSymbolMarginForHitDetection屬性控制點註冊爲點擊之前該點必須與給定點有多接近。