2012-03-03 3 views
0

Я рисую график, используя «Core-Plot». Когда я использую следующий код для оси x, он работает нормально.Отметить метки Отметить при маркировке оси 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]; 
    //-------------------------------------------------------------------------------- 

    [email protected]"-----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 исчезают. Я искал везде, но не мог найти ответ. Поэтому, пожалуйста, если кто-нибудь сможет это сделать, тогда скажите мне. Заранее спасибо !!

ответ

0

Политика маркировки CPTAxisLabelingPolicyNone требует, чтобы вы указали местонахождение галочки отдельно. Это обеспечивает максимальную гибкость при маркировке - вам не нужно маркировать каждый тик, и вы можете размещать метки в местах, где нет меток.

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

Если вы хотите незначительные тиков, вам необходимо установить minorTickLocations тоже.

+0

Я думаю, вы не получили мой вопрос. Я хочу отмечать метки в том же месте, где я устанавливаю свои собственные ярлыки. Значит, мне нужны пользовательские ярлыки и метки. –

+0

Политику маркировки CPTAxisLabelingPolicyNone не выполняет никакой маркировки для вас. Сюда входит определение места размещения меток. Код, который вы опубликовали, сделает пользовательские ярлыки просто прекрасными. Вы также должны указать ось, в которой вы хотите отметить отметки. Если вы не задали свойства местоположения тика (основные и/или второстепенные), предполагается, что вы не хотите отмечать отметки. –

+0

@thanks !! это действительно хорошо и полезно! –

Смежные вопросы