2009-12-10 46 views
0

我正在尋找iPhone的圖庫,它允許我將文本設置爲X軸上的值。在快速瀏覽core-plot後,似乎無法做到這一點。我偶然發現s7graphview,但似乎無法得到它的工作。s7圖表示例

是否有任何人誰沒有得到它的工作,並且可能能夠與我分享呢?或者是一些例子的鏈接? 它想我的大腦只是關閉導致其晚期,但我給它一個嘗試;)

最好的問候, 保羅Peelen

回答

2

核心情節確實支持自定義的刻度標記X軸: alt text http://www.sunsetlakesoftware.com/sites/default/files/CorePlotBarChartLabels.jpg

生產這些自定義標籤,你只需要設置X軸CPAxisLabelingPolicyNone的標籤策略,並提供你自己的。例如,你可以做以下複製上面繪製(在覈心情節iPhone測試應用程序):

x.labelRotation = M_PI/4; 
x.labelingPolicy = CPAxisLabelingPolicyNone; 
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:5], [NSDecimalNumber numberWithInt:10], [NSDecimalNumber numberWithInt:15], nil]; 
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", @"Label E", nil]; 
NSUInteger labelLocation = 0; 
NSMutableArray *customLabels = [[NSMutableArray alloc] initWithCapacity:[xAxisLabels count]]; 
for (NSNumber *tickLocation in customTickLocations) 
{ 
    CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle]; 
    newLabel.tickLocation = [tickLocation decimalValue]; 
    newLabel.offset = x.labelOffset + x.majorTickLength; 
    newLabel.rotation = M_PI/4; 
    [customLabels addObject:newLabel]; 
    [newLabel release]; 
} 

x.axisLabels = [NSSet setWithArray:customLabels]; 

有沒有必要繼承CPAxis添加這些標籤。

+0

布拉德感謝這個偉大的幫助。可能是核心情節會更有幫助,因爲我們喜歡newBees,如果我們得到了一些增強的功能更新教程,如果我們通過您在本教程中所示的畫面,這將是很大的幫助 – 2009-12-12 04:20:53

+0

是的,我們需要有一些更好的文檔,但不幸的是,框架正在變化得很快,以至於很難保持最新。我們正在努力將穩定版發佈到一起,並且演練文檔將成爲該軟件包的一部分。另請注意,本教程由第三方編寫。 – 2009-12-12 15:37:46

1

您可以更改標籤的名稱作爲

-(NSArray *)newAxisLabelsAtLocations:(NSArray *)locations 
{ 
    NSMutableArray *newLabels = [[NSMutableArray alloc] initWithCapacity:locations.count]; 
    for (NSDecimalNumber *tickLocation in locations) { 
     NSString *labelString = [self.labelFormatter stringForObjectValue:tickLocation]; 
     CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText:[NSString stringWithFormat:@"Day %@",labelString] textStyle:self.labelTextStyle]; 
     //[newLabel setTextColor:[CPColor whiteColor]]; 
     newLabel.tickLocation = [tickLocation decimalValue]; 
     newLabel.rotation = self.labelRotation; 
     switch (self.tickDirection) { 
      case CPSignNone: 
       newLabel.offset = self.labelOffset + self.majorTickLength/2.0f; 
       break; 
      case CPSignPositive: 
      case CPSignNegative: 
       newLabel.offset = self.labelOffset + self.majorTickLength; 
       break; 
     } 
     [newLabels addObject:newLabel]; 
     [newLabel release]; 
    } 
    return newLabels; 
} 

在覈心情節CPAxis.m

希望這有助於...;)

+0

好吧...但我還是有以下錯誤: 錯誤:沒有東西結構或聯合 錯誤請求成員的axisLabelOffset「:不兼容類型的參數1「setMajorIntervalLength:」 誤差不兼容的類型的參數1「setMajorIntervalLength:」 錯誤:請求構件「axisLabelOffset」的東西不結構或聯合 錯誤:請求在一些構件「邊界」不是一個結構或聯合 錯誤:在一些請求構件「defaultPlotSymbol」不是一個結構或聯合 錯誤:在一些要求會員「界限」不是一個結構或聯合 :( – 2009-12-11 18:53:09

+0

添加只是這些問題的一個新問題:http://stackoverflow.com/questions/1890207/coreplot-problems – 2009-12-11 19:08:29