繁体   English   中英

标记X轴时刻度线消失

[英]Tick Marks Disappear while labeling X-axis

我正在使用“ Core-Plot”绘制图形。 当我将以下代码用于x轴时,它可以正常工作。

            axisSet.xAxis.titleTextStyle = textStyle;
            axisSet.xAxis.titleOffset = 2.0f;
            axisSet.xAxis.axisLineStyle = axisLineStyle;
            axisSet.xAxis.majorTickLineStyle = axisLineStyle;
            axisSet.xAxis.minorTickLineStyle = axisLineStyle;
            axisSet.xAxis.labelTextStyle = textStyle;
            axisSet.xAxis.labelOffset = 0.0f;
            axisSet.xAxis.minorTicksPerInterval = 1;
            axisSet.xAxis.minorTickLength = 0.0f;
            axisSet.xAxis.majorTickLength = 5.0f;

            plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(7.0f)];
            axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1.0f);

但是当我使用这样的代码时:

// ------------------------------------------------ --------------------------

    NSArray *arr;
    NSString *month;
    NSString *days;

    NSDateFormatter *format=[[NSDateFormatter alloc]init];
    [format  setDateFormat:@"yyyy/MM/dd"];

    NSDate *day=[NSDate date];
    NSDate *week  = [day dateByAddingTimeInterval: -604800.0];
    NSDate *day1  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:week];
    NSDate *day2  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day1];
    NSDate *day3  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day2];
    NSDate *day4  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day3];
    NSDate *day5  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day4];
    NSDate *day6  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day5];
    NSDate *today = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day6];

    NSString *str1  =[format stringFromDate:day1];
    arr=[str1 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str1=[days stringByAppendingFormat:@":%@",month];

    NSString *str2  =[format stringFromDate:day2];
    arr=[str2 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str2=[days stringByAppendingFormat:@":%@",month];


    NSString *str3  =[format stringFromDate:day3];
    arr=[str3 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str3=[days stringByAppendingFormat:@":%@",month];

    NSString *str4  =[format stringFromDate:day4];
    arr=[str4 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str4=[days stringByAppendingFormat:@":%@",month];

    NSString *str5  =[format stringFromDate:day5];
    arr=[str5 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str5=[days stringByAppendingFormat:@":%@",month];


    NSString *str6  =[format stringFromDate:day6];
    arr=[str6 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str6=[days stringByAppendingFormat:@":%@",month];


    NSString *str7  =[format stringFromDate:today];
    arr=[str7 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str7=[days stringByAppendingFormat:@":%@",month];
    //--------------------------------------------------------------------------------

    axisSet.xAxis.title=@"-----One Week----->";
    axisSet.xAxis.titleTextStyle =textStyle;
    axisSet.xAxis.titleOffset = 10.0f;
    axisSet.xAxis.axisLineStyle = axisLineStyle;
    axisSet.xAxis.labelTextStyle = mtextStyle;
    axisSet.xAxis.labelOffset = 0.0f;
    axisSet.xAxis.majorTickLength = 1.0f;

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)   length:CPTDecimalFromFloat(7)];
    axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1.0f);

    //--------------labeling X-axis------------------------------------------

    axisSet.xAxis.labelRotation = M_PI/4;
    axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyNone;
    NSArray *customTickLocations = [NSArray arrayWithObjects:
                                    [NSDecimalNumber numberWithInt:1], 
                                    [NSDecimalNumber numberWithInt:2], 
                                    [NSDecimalNumber numberWithInt:3], 
                                    [NSDecimalNumber numberWithInt:4],
                                    [NSDecimalNumber numberWithInt:5],
                                    [NSDecimalNumber numberWithInt:6],
                                    [NSDecimalNumber numberWithInt:7],nil];
    NSArray *xAxisLabels = [NSArray arrayWithObjects:str1,str2,str3,str4,str5,str6,str7,nil];
    NSUInteger labelLocation = 0;
    NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];

    for (NSNumber *tickLocation in customTickLocations) 
    {
        CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:axisSet.xAxis.labelTextStyle];
        newLabel.tickLocation = [tickLocation decimalValue];
        newLabel.offset = axisSet.xAxis.labelOffset + axisSet.xAxis.majorTickLength;
        [customLabels addObject:newLabel];
        [newLabel release];
    }
    axisSet.xAxis.axisLabels =  [NSSet setWithArray:customLabels];
    //--------------------------------------------------------------------------- 

然后,x轴上的刻度线消失。 我到处搜寻,但找不到相关答案。 因此,如果有人可以,请告诉我。 提前致谢 !!

CPTAxisLabelingPolicyNone标记策略要求您单独提供刻度位置。 这样可以在标签上提供最大的灵活性-您不必标记每个刻度线,也可以将标签放置在没有刻度线的位置。

axisSet.xAxis.majorTickLocations = [NSSet setWithArray:customTickLocations];

如果您想要次要滴答声,则也需要设置minorTickLocations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM