0

我试图在 iPhone 应用程序中使用 Core Plot 绘制一个简单的统计数据。我最初将标签策略用作两个轴的 CPTAxisLabelingPolicyAutomatic,并且网格线看起来很好,如下所示:

在此处输入图像描述

您可以看到该图具有垂直和水平网格线。然后,我将标签政策更改为

    axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyNone;
    axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyAutomatic;

NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:xAxisLabels.count];
CPTMutableTextStyle *textStyle = [[CPTMutableTextStyle alloc] init];
textStyle.color = [CPTColor lightGrayColor];

for (NSNumber *tickLocation in customTickLocations) {
    CPTAxisLabel *newLabel = [[CPTAxisLabel alloc]
                              initWithText:[NSString stringWithFormat:@"%@",(NSDate *)[xAxisLabels objectAtIndex:labelLocation++]] textStyle:textStyle];
    newLabel.tickLocation = [tickLocation decimalValue];
    newLabel.rotation = 25.0;
    newLabel.offset = 10.0;
    [customLabels addObject:newLabel];
}
axisSet.xAxis.axisLabels =  [NSSet setWithArray:customLabels];

但是,因为当我为 X 轴添加自定义标签时,X 轴网格线(即垂直网格线)没有出现。只看到水平网格线,您可以在下面的 App 截图中看到:

在此处输入图像描述

4

2 回答 2

8

CPTAxisLabelingPolicyNone标签策略不会创建任何标签或刻度线。您需要创建位置集并设置majorTickLocations和/或minorTickLocations

以下是Plot Gallery示例应用程序中的一些示例代码:

NSSet *majorTickLocations = [NSSet setWithObjects:[NSDecimalNumber zero],
                             [NSDecimalNumber numberWithUnsignedInteger:30],
                             [NSDecimalNumber numberWithUnsignedInteger:50],
                             [NSDecimalNumber numberWithUnsignedInteger:85],
                             [NSDecimalNumber numberWithUnsignedInteger:100],
                             nil];
xAxis.majorTickLocations = majorTickLocations;

刻度位置通常与标签位置相同,但不一定如此。

于 2013-05-22T23:27:49.640 回答
3

谢谢你,@Erik Skroch!对我有用的是标签政策的简单改变

axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyNone;

 axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval;

这是由您的声明引发的:“CPTAxisLabelingPolicyNone 标签政策不会创建任何标签或刻度线。”

于 2013-05-23T04:59:14.917 回答